@semiont/cli 0.4.15 → 0.4.17

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 (229) hide show
  1. package/dist/cli.mjs +3829 -9040
  2. package/dist/dashboard/dashboard.css +1 -1
  3. package/dist/dashboard/dashboard.css.map +2 -2
  4. package/dist/frontend/dist/apple-touch-icon.png +0 -0
  5. package/dist/frontend/dist/assets/{CookiePreferences-CO_BNHwm.js → CookiePreferences-BDtMuCT2.js} +2 -2
  6. package/dist/frontend/dist/assets/{CookiePreferences-CO_BNHwm.js.map → CookiePreferences-BDtMuCT2.js.map} +1 -1
  7. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-CHDCGQBR-BLaEAPe0.js → PdfAnnotationCanvas.client-CHDCGQBR-CuWwI0uw.js} +2 -2
  8. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-CHDCGQBR-BLaEAPe0.js.map → PdfAnnotationCanvas.client-CHDCGQBR-CuWwI0uw.js.map} +1 -1
  9. package/dist/frontend/dist/assets/ToolbarPanels-mrjx6GSA.js +2 -0
  10. package/dist/frontend/dist/assets/ToolbarPanels-mrjx6GSA.js.map +1 -0
  11. package/dist/frontend/dist/assets/ar-3W37O3R3-BJ1fDUvB.js +2 -0
  12. package/dist/frontend/dist/assets/ar-3W37O3R3-BJ1fDUvB.js.map +1 -0
  13. package/dist/frontend/dist/assets/bn-JZTJLMVE-k1gI6ffq.js +2 -0
  14. package/dist/frontend/dist/assets/bn-JZTJLMVE-k1gI6ffq.js.map +1 -0
  15. package/dist/frontend/dist/assets/{client-RpFyflU_.js → client-Dwyu_mF1.js} +2 -2
  16. package/dist/frontend/dist/assets/{client-RpFyflU_.js.map → client-Dwyu_mF1.js.map} +1 -1
  17. package/dist/frontend/dist/assets/{client-bqO7W1Xj.js → client-mCvsMrtH.js} +2 -2
  18. package/dist/frontend/dist/assets/{client-bqO7W1Xj.js.map → client-mCvsMrtH.js.map} +1 -1
  19. package/dist/frontend/dist/assets/{client-xJTgSko3.js → client-so55bcfy.js} +2 -2
  20. package/dist/frontend/dist/assets/{client-xJTgSko3.js.map → client-so55bcfy.js.map} +1 -1
  21. package/dist/frontend/dist/assets/{client-ekxuarKC.js → client-w-_FzMWW.js} +2 -2
  22. package/dist/frontend/dist/assets/{client-ekxuarKC.js.map → client-w-_FzMWW.js.map} +1 -1
  23. package/dist/frontend/dist/assets/cs-XYHH7HNE-BqQWIWM9.js +2 -0
  24. package/dist/frontend/dist/assets/cs-XYHH7HNE-BqQWIWM9.js.map +1 -0
  25. package/dist/frontend/dist/assets/da-MZKIECVT-pufSb0d_.js +2 -0
  26. package/dist/frontend/dist/assets/da-MZKIECVT-pufSb0d_.js.map +1 -0
  27. package/dist/frontend/dist/assets/de-AYXTMRQW-BRMduIa0.js +2 -0
  28. package/dist/frontend/dist/assets/de-AYXTMRQW-BRMduIa0.js.map +1 -0
  29. package/dist/frontend/dist/assets/el-A6CVQWAW-DycBhXUi.js +2 -0
  30. package/dist/frontend/dist/assets/el-A6CVQWAW-DycBhXUi.js.map +1 -0
  31. package/dist/frontend/dist/assets/es-M2HXLJGT-BFQ6WIpw.js +2 -0
  32. package/dist/frontend/dist/assets/es-M2HXLJGT-BFQ6WIpw.js.map +1 -0
  33. package/dist/frontend/dist/assets/fa-V6JZJDYP-C8CwCeSd.js +2 -0
  34. package/dist/frontend/dist/assets/fa-V6JZJDYP-C8CwCeSd.js.map +1 -0
  35. package/dist/frontend/dist/assets/fi-ONDTZ5H7-aby5--Ip.js +2 -0
  36. package/dist/frontend/dist/assets/fi-ONDTZ5H7-aby5--Ip.js.map +1 -0
  37. package/dist/frontend/dist/assets/fr-PAPV4H4G-D9SFT8MA.js +2 -0
  38. package/dist/frontend/dist/assets/fr-PAPV4H4G-D9SFT8MA.js.map +1 -0
  39. package/dist/frontend/dist/assets/he-F6VTLJLW-B8Rc1C-m.js +2 -0
  40. package/dist/frontend/dist/assets/he-F6VTLJLW-B8Rc1C-m.js.map +1 -0
  41. package/dist/frontend/dist/assets/hi-CFUAV4BF-CuWy2y7I.js +2 -0
  42. package/dist/frontend/dist/assets/hi-CFUAV4BF-CuWy2y7I.js.map +1 -0
  43. package/dist/frontend/dist/assets/id-NBKLCCI7-DnMwKKq7.js +2 -0
  44. package/dist/frontend/dist/assets/id-NBKLCCI7-DnMwKKq7.js.map +1 -0
  45. package/dist/frontend/dist/assets/{index-XWcEpo5a.js → index-CqzrFNnV.js} +48 -48
  46. package/dist/frontend/dist/assets/index-CqzrFNnV.js.map +1 -0
  47. package/dist/frontend/dist/assets/index-DNL392dn.css +1 -0
  48. package/dist/frontend/dist/assets/it-SLSOWVVU-hrlm8f9F.js +2 -0
  49. package/dist/frontend/dist/assets/it-SLSOWVVU-hrlm8f9F.js.map +1 -0
  50. package/dist/frontend/dist/assets/ja-L5IG4ECE-BvMVB5sy.js +2 -0
  51. package/dist/frontend/dist/assets/ja-L5IG4ECE-BvMVB5sy.js.map +1 -0
  52. package/dist/frontend/dist/assets/ko-QYMTULKK-CNEZe0oy.js +2 -0
  53. package/dist/frontend/dist/assets/ko-QYMTULKK-CNEZe0oy.js.map +1 -0
  54. package/dist/frontend/dist/assets/{layout-ChyKFPPP.js → layout-B3hxaRnF.js} +2 -2
  55. package/dist/frontend/dist/assets/{layout-ChyKFPPP.js.map → layout-B3hxaRnF.js.map} +1 -1
  56. package/dist/frontend/dist/assets/{layout-BN0UEIdX.js → layout-Cmn1yGWi.js} +2 -2
  57. package/dist/frontend/dist/assets/{layout-BN0UEIdX.js.map → layout-Cmn1yGWi.js.map} +1 -1
  58. package/dist/frontend/dist/assets/{layout-BFanPfv_.js → layout-CsUwTEip.js} +2 -2
  59. package/dist/frontend/dist/assets/{layout-BFanPfv_.js.map → layout-CsUwTEip.js.map} +1 -1
  60. package/dist/frontend/dist/assets/layout-DXjUb5pL.js +2 -0
  61. package/dist/frontend/dist/assets/layout-DXjUb5pL.js.map +1 -0
  62. package/dist/frontend/dist/assets/ms-5DGSFKM2-BlyezW6W.js +2 -0
  63. package/dist/frontend/dist/assets/ms-5DGSFKM2-BlyezW6W.js.map +1 -0
  64. package/dist/frontend/dist/assets/nl-VZPCGONO-BJ0llUPS.js +2 -0
  65. package/dist/frontend/dist/assets/nl-VZPCGONO-BJ0llUPS.js.map +1 -0
  66. package/dist/frontend/dist/assets/no-MF6F352I-Wf2ZNjHx.js +2 -0
  67. package/dist/frontend/dist/assets/no-MF6F352I-Wf2ZNjHx.js.map +1 -0
  68. package/dist/frontend/dist/assets/{not-found-BboGygIW.js → not-found-C46rJTS0.js} +2 -2
  69. package/dist/frontend/dist/assets/{not-found-BboGygIW.js.map → not-found-C46rJTS0.js.map} +1 -1
  70. package/dist/frontend/dist/assets/{page-Bht4dePL.js → page-B3Uq31BP.js} +2 -2
  71. package/dist/frontend/dist/assets/{page-Bht4dePL.js.map → page-B3Uq31BP.js.map} +1 -1
  72. package/dist/frontend/dist/assets/{page-8F47gNEm.js → page-BCTRI-5h.js} +2 -2
  73. package/dist/frontend/dist/assets/{page-8F47gNEm.js.map → page-BCTRI-5h.js.map} +1 -1
  74. package/dist/frontend/dist/assets/{page-Dhi8hP-S.js → page-BSaAdGF1.js} +2 -2
  75. package/dist/frontend/dist/assets/{page-Dhi8hP-S.js.map → page-BSaAdGF1.js.map} +1 -1
  76. package/dist/frontend/dist/assets/{page-FovvpNWp.js → page-BjvkLuU3.js} +2 -2
  77. package/dist/frontend/dist/assets/{page-FovvpNWp.js.map → page-BjvkLuU3.js.map} +1 -1
  78. package/dist/frontend/dist/assets/page-Bs0NV-OR.js +2 -0
  79. package/dist/frontend/dist/assets/{page-CpbZG7nR.js.map → page-Bs0NV-OR.js.map} +1 -1
  80. package/dist/frontend/dist/assets/{page-knhbwxzQ.js → page-C9LRjfKm.js} +2 -2
  81. package/dist/frontend/dist/assets/{page-knhbwxzQ.js.map → page-C9LRjfKm.js.map} +1 -1
  82. package/dist/frontend/dist/assets/{page-CnJVZMgv.js → page-Cz0qvcvG.js} +2 -2
  83. package/dist/frontend/dist/assets/{page-CnJVZMgv.js.map → page-Cz0qvcvG.js.map} +1 -1
  84. package/dist/frontend/dist/assets/{page-BaqIbrus.js → page-DCPEscX2.js} +2 -2
  85. package/dist/frontend/dist/assets/{page-BaqIbrus.js.map → page-DCPEscX2.js.map} +1 -1
  86. package/dist/frontend/dist/assets/{page-BtqPeWyh.js → page-DKA-wyMy.js} +2 -2
  87. package/dist/frontend/dist/assets/{page-BtqPeWyh.js.map → page-DKA-wyMy.js.map} +1 -1
  88. package/dist/frontend/dist/assets/{page-T424mvNp.js → page-DWvAfkY1.js} +2 -2
  89. package/dist/frontend/dist/assets/{page-T424mvNp.js.map → page-DWvAfkY1.js.map} +1 -1
  90. package/dist/frontend/dist/assets/{page-BfhPRgzq.js → page-Df3S4CSz.js} +2 -2
  91. package/dist/frontend/dist/assets/{page-BfhPRgzq.js.map → page-Df3S4CSz.js.map} +1 -1
  92. package/dist/frontend/dist/assets/{page-CG7C0ib3.js → page-DhkdSv3o.js} +2 -2
  93. package/dist/frontend/dist/assets/{page-CG7C0ib3.js.map → page-DhkdSv3o.js.map} +1 -1
  94. package/dist/frontend/dist/assets/{page-DI1MUp4X.js → page-DjY64aaC.js} +2 -2
  95. package/dist/frontend/dist/assets/{page-DI1MUp4X.js.map → page-DjY64aaC.js.map} +1 -1
  96. package/dist/frontend/dist/assets/{page-DB8grXzl.js → page-DlBB3Xru.js} +2 -2
  97. package/dist/frontend/dist/assets/{page-DB8grXzl.js.map → page-DlBB3Xru.js.map} +1 -1
  98. package/dist/frontend/dist/assets/{page-Cct5hwIU.js → page-DqbPyuN1.js} +2 -2
  99. package/dist/frontend/dist/assets/{page-Cct5hwIU.js.map → page-DqbPyuN1.js.map} +1 -1
  100. package/dist/frontend/dist/assets/page-cHW-gnyq.js +2 -0
  101. package/dist/frontend/dist/assets/{page-8x98ZAYe.js.map → page-cHW-gnyq.js.map} +1 -1
  102. package/dist/frontend/dist/assets/{page-CJnfSnRg.js → page-jAWX9Yq4.js} +2 -2
  103. package/dist/frontend/dist/assets/{page-CJnfSnRg.js.map → page-jAWX9Yq4.js.map} +1 -1
  104. package/dist/frontend/dist/assets/{page-CzvERJKF.js → page-sOV813bU.js} +2 -2
  105. package/dist/frontend/dist/assets/{page-CzvERJKF.js.map → page-sOV813bU.js.map} +1 -1
  106. package/dist/frontend/dist/assets/pl-WIK72JUO-wOGg7Me5.js +2 -0
  107. package/dist/frontend/dist/assets/pl-WIK72JUO-wOGg7Me5.js.map +1 -0
  108. package/dist/frontend/dist/assets/{privacy-B5TeXaed.js → privacy-BCxizJzS.js} +2 -2
  109. package/dist/frontend/dist/assets/{privacy-B5TeXaed.js.map → privacy-BCxizJzS.js.map} +1 -1
  110. package/dist/frontend/dist/assets/pt-RRP5ZF6A-C32Vedhv.js +2 -0
  111. package/dist/frontend/dist/assets/pt-RRP5ZF6A-C32Vedhv.js.map +1 -0
  112. package/dist/frontend/dist/assets/ro-XHQLC3T7-uGs3uHRp.js +2 -0
  113. package/dist/frontend/dist/assets/ro-XHQLC3T7-uGs3uHRp.js.map +1 -0
  114. package/dist/frontend/dist/assets/{routing-By_4TZHr.js → routing-C43HVxNw.js} +2 -2
  115. package/dist/frontend/dist/assets/{routing-By_4TZHr.js.map → routing-C43HVxNw.js.map} +1 -1
  116. package/dist/frontend/dist/assets/{routing-vcvYfuPO.js → routing-swMLj8Z8.js} +2 -2
  117. package/dist/frontend/dist/assets/{routing-vcvYfuPO.js.map → routing-swMLj8Z8.js.map} +1 -1
  118. package/dist/frontend/dist/assets/sv-EWULDN6E-CkRBfwt9.js +2 -0
  119. package/dist/frontend/dist/assets/sv-EWULDN6E-CkRBfwt9.js.map +1 -0
  120. package/dist/frontend/dist/assets/th-TGOBHFG4-BGt_aO5K.js +2 -0
  121. package/dist/frontend/dist/assets/th-TGOBHFG4-BGt_aO5K.js.map +1 -0
  122. package/dist/frontend/dist/assets/tr-LMMPBMV7-CrGE1PKA.js +2 -0
  123. package/dist/frontend/dist/assets/tr-LMMPBMV7-CrGE1PKA.js.map +1 -0
  124. package/dist/frontend/dist/assets/uk-IPGRRJY6-CPaxgpd8.js +2 -0
  125. package/dist/frontend/dist/assets/uk-IPGRRJY6-CPaxgpd8.js.map +1 -0
  126. package/dist/frontend/dist/assets/vi-Q676OJQS-DpyIm6R1.js +2 -0
  127. package/dist/frontend/dist/assets/vi-Q676OJQS-DpyIm6R1.js.map +1 -0
  128. package/dist/frontend/dist/assets/zh-F3MTWQDX-C09t_PFf.js +2 -0
  129. package/dist/frontend/dist/assets/zh-F3MTWQDX-C09t_PFf.js.map +1 -0
  130. package/dist/frontend/dist/favicon-16x16.png +0 -0
  131. package/dist/frontend/dist/favicon-32x32.png +0 -0
  132. package/dist/frontend/dist/favicon.ico +0 -0
  133. package/dist/frontend/dist/favicon.svg +47 -0
  134. package/dist/frontend/dist/index.html +2 -2
  135. package/dist/frontend/dist/messages/ar.json +9 -3
  136. package/dist/frontend/dist/messages/bn.json +9 -3
  137. package/dist/frontend/dist/messages/cs.json +9 -3
  138. package/dist/frontend/dist/messages/da.json +9 -3
  139. package/dist/frontend/dist/messages/de.json +9 -3
  140. package/dist/frontend/dist/messages/el.json +9 -3
  141. package/dist/frontend/dist/messages/en.json +5 -1
  142. package/dist/frontend/dist/messages/es.json +9 -3
  143. package/dist/frontend/dist/messages/fa.json +9 -3
  144. package/dist/frontend/dist/messages/fi.json +9 -3
  145. package/dist/frontend/dist/messages/fr.json +9 -3
  146. package/dist/frontend/dist/messages/he.json +9 -3
  147. package/dist/frontend/dist/messages/hi.json +9 -3
  148. package/dist/frontend/dist/messages/id.json +9 -3
  149. package/dist/frontend/dist/messages/it.json +9 -3
  150. package/dist/frontend/dist/messages/ja.json +9 -3
  151. package/dist/frontend/dist/messages/ko.json +9 -3
  152. package/dist/frontend/dist/messages/ms.json +9 -3
  153. package/dist/frontend/dist/messages/nl.json +9 -3
  154. package/dist/frontend/dist/messages/no.json +9 -3
  155. package/dist/frontend/dist/messages/pl.json +9 -3
  156. package/dist/frontend/dist/messages/pt.json +9 -3
  157. package/dist/frontend/dist/messages/ro.json +9 -3
  158. package/dist/frontend/dist/messages/sv.json +9 -3
  159. package/dist/frontend/dist/messages/th.json +9 -3
  160. package/dist/frontend/dist/messages/tr.json +9 -3
  161. package/dist/frontend/dist/messages/uk.json +9 -3
  162. package/dist/frontend/dist/messages/vi.json +9 -3
  163. package/dist/frontend/dist/messages/zh.json +9 -3
  164. package/dist/frontend/package.json +1 -1
  165. package/package.json +24 -23
  166. package/dist/frontend/dist/assets/ToolbarPanels-DRHyLUHl.js +0 -2
  167. package/dist/frontend/dist/assets/ToolbarPanels-DRHyLUHl.js.map +0 -1
  168. package/dist/frontend/dist/assets/ar-R4CRNXEF-Ca4TvZQX.js +0 -2
  169. package/dist/frontend/dist/assets/ar-R4CRNXEF-Ca4TvZQX.js.map +0 -1
  170. package/dist/frontend/dist/assets/bn-CZKGRHTA-BYgoliLL.js +0 -2
  171. package/dist/frontend/dist/assets/bn-CZKGRHTA-BYgoliLL.js.map +0 -1
  172. package/dist/frontend/dist/assets/cs-4WIB2IHH-C7kYZeeH.js +0 -2
  173. package/dist/frontend/dist/assets/cs-4WIB2IHH-C7kYZeeH.js.map +0 -1
  174. package/dist/frontend/dist/assets/da-JWYEUYPX-ZaU3NHTl.js +0 -2
  175. package/dist/frontend/dist/assets/da-JWYEUYPX-ZaU3NHTl.js.map +0 -1
  176. package/dist/frontend/dist/assets/de-GWUQZGER-DsO9vSRx.js +0 -2
  177. package/dist/frontend/dist/assets/de-GWUQZGER-DsO9vSRx.js.map +0 -1
  178. package/dist/frontend/dist/assets/el-DM2GT7P5-Baqj4u37.js +0 -2
  179. package/dist/frontend/dist/assets/el-DM2GT7P5-Baqj4u37.js.map +0 -1
  180. package/dist/frontend/dist/assets/es-6LVQIM3D-iPWrspyh.js +0 -2
  181. package/dist/frontend/dist/assets/es-6LVQIM3D-iPWrspyh.js.map +0 -1
  182. package/dist/frontend/dist/assets/fa-IRUJY3QI-D7jhkhZq.js +0 -2
  183. package/dist/frontend/dist/assets/fa-IRUJY3QI-D7jhkhZq.js.map +0 -1
  184. package/dist/frontend/dist/assets/fi-53FBOEVT-DyL1QG5i.js +0 -2
  185. package/dist/frontend/dist/assets/fi-53FBOEVT-DyL1QG5i.js.map +0 -1
  186. package/dist/frontend/dist/assets/fr-Q5KY7QL6-CGM9feO_.js +0 -2
  187. package/dist/frontend/dist/assets/fr-Q5KY7QL6-CGM9feO_.js.map +0 -1
  188. package/dist/frontend/dist/assets/he-HJNKULBY-CiS3ww0i.js +0 -2
  189. package/dist/frontend/dist/assets/he-HJNKULBY-CiS3ww0i.js.map +0 -1
  190. package/dist/frontend/dist/assets/hi-UYZ4X6CR-Cb3OYOtm.js +0 -2
  191. package/dist/frontend/dist/assets/hi-UYZ4X6CR-Cb3OYOtm.js.map +0 -1
  192. package/dist/frontend/dist/assets/id-UAQMH6U2-CgqnTJaj.js +0 -2
  193. package/dist/frontend/dist/assets/id-UAQMH6U2-CgqnTJaj.js.map +0 -1
  194. package/dist/frontend/dist/assets/index-BUe9tsov.css +0 -1
  195. package/dist/frontend/dist/assets/index-XWcEpo5a.js.map +0 -1
  196. package/dist/frontend/dist/assets/it-C7QEBNFA-BP64tE9N.js +0 -2
  197. package/dist/frontend/dist/assets/it-C7QEBNFA-BP64tE9N.js.map +0 -1
  198. package/dist/frontend/dist/assets/ja-THS6AOSJ-BlrsrgpZ.js +0 -2
  199. package/dist/frontend/dist/assets/ja-THS6AOSJ-BlrsrgpZ.js.map +0 -1
  200. package/dist/frontend/dist/assets/ko-XKK3TWQG-BnscEkav.js +0 -2
  201. package/dist/frontend/dist/assets/ko-XKK3TWQG-BnscEkav.js.map +0 -1
  202. package/dist/frontend/dist/assets/layout-DmjP6diV.js +0 -2
  203. package/dist/frontend/dist/assets/layout-DmjP6diV.js.map +0 -1
  204. package/dist/frontend/dist/assets/ms-GSK7LIF7-BWJ-3eXy.js +0 -2
  205. package/dist/frontend/dist/assets/ms-GSK7LIF7-BWJ-3eXy.js.map +0 -1
  206. package/dist/frontend/dist/assets/nl-KUBWITGY-DeqIcEFQ.js +0 -2
  207. package/dist/frontend/dist/assets/nl-KUBWITGY-DeqIcEFQ.js.map +0 -1
  208. package/dist/frontend/dist/assets/no-ECWZUHT6-DMgg097w.js +0 -2
  209. package/dist/frontend/dist/assets/no-ECWZUHT6-DMgg097w.js.map +0 -1
  210. package/dist/frontend/dist/assets/page-8x98ZAYe.js +0 -2
  211. package/dist/frontend/dist/assets/page-CpbZG7nR.js +0 -2
  212. package/dist/frontend/dist/assets/pl-PLVWSZWS-B9TKLToJ.js +0 -2
  213. package/dist/frontend/dist/assets/pl-PLVWSZWS-B9TKLToJ.js.map +0 -1
  214. package/dist/frontend/dist/assets/pt-AL74ZTKB-dm40issX.js +0 -2
  215. package/dist/frontend/dist/assets/pt-AL74ZTKB-dm40issX.js.map +0 -1
  216. package/dist/frontend/dist/assets/ro-WTPHLHGS-42q4gQmg.js +0 -2
  217. package/dist/frontend/dist/assets/ro-WTPHLHGS-42q4gQmg.js.map +0 -1
  218. package/dist/frontend/dist/assets/sv-QCLI7SG4-KVnre_zY.js +0 -2
  219. package/dist/frontend/dist/assets/sv-QCLI7SG4-KVnre_zY.js.map +0 -1
  220. package/dist/frontend/dist/assets/th-WCKVZU6U-CfRhC_Eg.js +0 -2
  221. package/dist/frontend/dist/assets/th-WCKVZU6U-CfRhC_Eg.js.map +0 -1
  222. package/dist/frontend/dist/assets/tr-2CAFS2XS-425EzbTD.js +0 -2
  223. package/dist/frontend/dist/assets/tr-2CAFS2XS-425EzbTD.js.map +0 -1
  224. package/dist/frontend/dist/assets/uk-TDE4JLCY-BUQpzvxx.js +0 -2
  225. package/dist/frontend/dist/assets/uk-TDE4JLCY-BUQpzvxx.js.map +0 -1
  226. package/dist/frontend/dist/assets/vi-KKXZ4PCX-BqlhZbBi.js +0 -2
  227. package/dist/frontend/dist/assets/vi-KKXZ4PCX-BqlhZbBi.js.map +0 -1
  228. package/dist/frontend/dist/assets/zh-VH4XN5PV-TNQ5FOx-.js +0 -2
  229. package/dist/frontend/dist/assets/zh-VH4XN5PV-TNQ5FOx-.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{j as e,Q as T,a as L,M as A,b as D}from"./query-B6BuIB0M.js";import{r as i,O as M}from"./vendor-DJo4KD8w.js";import{h as z,aq as W,ar as B,as as N,at as O,au as G,av as x,aw as v,ax as j,ay as I}from"./index-XWcEpo5a.js";import{a as F,C as q,b as $,i as Q,c as V,s as y}from"./privacy-B5TeXaed.js";import{u as Y}from"./routing-By_4TZHr.js";import{u as b}from"./i18n-BbpF47i1.js";function K(){const t=Y(),n=i.useCallback(({url:o,cancelFallback:l})=>{l(),t.push(o)},[t]),s=i.useCallback(({path:o})=>{t.push(o)},[t]);return z({"browse:external-navigate":n,"browse:router-push":s}),null}function _(){const{i18n:t}=b();return i.useMemo(()=>({t:(n,s,o)=>{var m;const l=t.getResourceBundle(t.language,"translation");let c=(m=l==null?void 0:l[n])==null?void 0:m[s];if(!c)return`${n}.${s}`;if(o&&typeof c=="string"){let a=c;return Object.entries(o).forEach(([d,f])=>{a=a.replace(new RegExp(`\\{${d}\\}`,"g"),String(f))}),a}return c}}),[t,t.language])}function H(){return new L({queryCache:new D({onError:t=>{t instanceof x&&(t.status===401?v("Your session has expired. Please sign in again."):t.status===403&&j("You do not have permission to access this resource."))}}),mutationCache:new A({onError:t=>{t instanceof x&&(t.status===401?v("Your session has expired. Please sign in again."):t.status===403&&j("You do not have permission to perform this action."))}}),defaultOptions:{queries:{retry:(t,n)=>n instanceof x&&(n.status===401||n.status===403||n.status>=400&&n.status<500)?!1:t<3,retryDelay:t=>Math.min(1e3*2**t,3e4),staleTime:300*1e3,refetchOnWindowFocus:!1}}})}function U({children:t}){const[n]=i.useState(()=>H()),s=_();return e.jsx(W,{translationManager:s,children:e.jsx(T,{client:n,children:e.jsx(B,{children:e.jsx(N,{children:e.jsx(F,{children:e.jsx(O,{children:e.jsxs(G,{children:[e.jsx(K,{}),t]})})})})})})})}function J({title:t,titleId:n,...s},o){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:o,"aria-labelledby":n},s),t?i.createElement("title",{id:n},t):null,i.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"}))}const X=i.forwardRef(J);function Z({title:t,titleId:n,...s},o){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:o,"aria-labelledby":n},s),t?i.createElement("title",{id:n},t):null,i.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"}))}const ee=i.forwardRef(Z);function te({className:t=""}){const{t:n}=b(),s=(r,u)=>n(`CookieBanner.${r}`,u),[o,l]=i.useState(!1),[c,m]=i.useState(!1),[a,d]=i.useState(!1),[f,p]=i.useState("GENERAL"),[g,C]=i.useState({necessary:!0,analytics:!1,marketing:!1,preferences:!1});i.useEffect(()=>{(async()=>{if($()){l(!0);try{const[u,R]=await Promise.all([Q(),V()]);p(u?"GDPR":R?"CCPA":"GENERAL")}catch(u){console.error("Failed to detect region:",u),p("GENERAL")}}})()},[]);const w=async()=>{d(!0);try{const r={necessary:!0,analytics:!0,marketing:!0,preferences:!0};await Promise.resolve(y(r)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},k=async()=>{d(!0);try{const r={necessary:!0,analytics:!1,marketing:!1,preferences:!1};await Promise.resolve(y(r)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},P=async()=>{d(!0);try{await Promise.resolve(y(g)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},E=r=>{r!=="necessary"&&C(u=>({...u,[r]:!u[r]}))},S=()=>{switch(f){case"GDPR":return{title:s("gdprTitle"),description:s("gdprDescription"),learnMore:s("gdprLearnMore")};case"CCPA":return{title:s("ccpaTitle"),description:s("ccpaDescription"),learnMore:s("ccpaLearnMore")};default:return{title:s("generalTitle"),description:s("generalDescription"),learnMore:s("generalLearnMore")}}};if(!o)return null;const h=S();return e.jsx("div",{className:t,style:{position:"fixed",bottom:0,left:0,right:0,zIndex:50,backgroundColor:"var(--semiont-bg-primary)",borderTop:"1px solid var(--semiont-border-primary)",boxShadow:"var(--semiont-shadow-lg)"},children:e.jsx("div",{style:{maxWidth:"80rem",margin:"0 auto",padding:"1rem 1.5rem"},children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"1.5rem",flexWrap:"wrap"},children:[e.jsxs("div",{style:{flex:1,minWidth:"300px"},children:[e.jsx("h3",{style:{fontSize:"1.125rem",fontWeight:600,color:"var(--semiont-text-primary)",marginBottom:"0.5rem"},children:h.title}),e.jsx("p",{style:{fontSize:"var(--semiont-text-sm, 0.875rem)",color:"var(--semiont-text-secondary)",marginBottom:"0.25rem"},children:h.description}),e.jsx("p",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)"},children:h.learnMore})]}),e.jsxs("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap"},children:[e.jsxs("button",{type:"button",onClick:()=>m(!c),className:"semiont-button--secondary",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[s("customize"),c?e.jsx(ee,{style:{width:"1rem",height:"1rem"}}):e.jsx(X,{style:{width:"1rem",height:"1rem"}})]}),f!=="GDPR"&&e.jsx("button",{type:"button",onClick:k,disabled:a,className:"semiont-button--secondary",children:s(a?"saving":"rejectAll")}),e.jsx("button",{type:"button",onClick:w,disabled:a,className:"semiont-button--primary",children:s(a?"saving":"acceptAll")})]})]}),c&&e.jsx("div",{style:{borderTop:"1px solid var(--semiont-border-primary)",paddingTop:"1rem"},children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[e.jsx("h4",{style:{fontSize:"1rem",fontWeight:500,color:"var(--semiont-text-primary)"},children:s("cookiePreferences")}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:q.map(r=>e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[e.jsx("div",{style:{display:"flex",alignItems:"center",height:"1.25rem"},children:e.jsx("input",{id:`cookie-${r.id}`,type:"checkbox",checked:g[r.id]||!1,onChange:()=>E(r.id),disabled:r.required||a,style:{accentColor:"var(--semiont-color-primary-600, #2563eb)"}})}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("label",{htmlFor:`cookie-${r.id}`,style:{fontSize:"var(--semiont-text-sm, 0.875rem)",fontWeight:500,color:"var(--semiont-text-primary)",cursor:"pointer"},children:[r.name,r.required&&e.jsx("span",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)",marginLeft:"0.25rem"},children:s("required")})]}),e.jsx("p",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-secondary)",marginTop:"0.25rem"},children:r.description}),e.jsxs("details",{style:{marginTop:"0.25rem"},children:[e.jsx("summary",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-color-primary-600, #2563eb)",cursor:"pointer"},children:s("viewCookies")}),e.jsx("div",{style:{marginTop:"0.25rem",fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)"},children:r.cookies.join(", ")})]})]})]},r.id))}),e.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.75rem",paddingTop:"1rem"},children:[e.jsx("button",{type:"button",onClick:()=>m(!1),className:"semiont-button--secondary",children:s("cancel")}),e.jsx("button",{type:"button",onClick:P,disabled:a,className:"semiont-button--primary",children:s(a?"saving":"savePreferences")})]})]})})]})})})}function le(){return e.jsxs(U,{children:[e.jsx(I,{}),e.jsx(M,{}),e.jsx(te,{})]})}export{le as default};
2
- //# sourceMappingURL=layout-BFanPfv_.js.map
1
+ import{j as e,Q as T,a as L,M as A,b as D}from"./query-B6BuIB0M.js";import{r as i,O as M}from"./vendor-DJo4KD8w.js";import{h as z,aq as W,ar as B,as as N,at as O,au as G,av as x,aw as v,ax as j,ay as I}from"./index-CqzrFNnV.js";import{a as F,C as q,b as $,i as Q,c as V,s as y}from"./privacy-BCxizJzS.js";import{u as Y}from"./routing-C43HVxNw.js";import{u as b}from"./i18n-BbpF47i1.js";function K(){const t=Y(),n=i.useCallback(({url:o,cancelFallback:l})=>{l(),t.push(o)},[t]),s=i.useCallback(({path:o})=>{t.push(o)},[t]);return z({"browse:external-navigate":n,"browse:router-push":s}),null}function _(){const{i18n:t}=b();return i.useMemo(()=>({t:(n,s,o)=>{var m;const l=t.getResourceBundle(t.language,"translation");let c=(m=l==null?void 0:l[n])==null?void 0:m[s];if(!c)return`${n}.${s}`;if(o&&typeof c=="string"){let a=c;return Object.entries(o).forEach(([d,f])=>{a=a.replace(new RegExp(`\\{${d}\\}`,"g"),String(f))}),a}return c}}),[t,t.language])}function H(){return new L({queryCache:new D({onError:t=>{t instanceof x&&(t.status===401?v("Your session has expired. Please sign in again."):t.status===403&&j("You do not have permission to access this resource."))}}),mutationCache:new A({onError:t=>{t instanceof x&&(t.status===401?v("Your session has expired. Please sign in again."):t.status===403&&j("You do not have permission to perform this action."))}}),defaultOptions:{queries:{retry:(t,n)=>n instanceof x&&(n.status===401||n.status===403||n.status>=400&&n.status<500)?!1:t<3,retryDelay:t=>Math.min(1e3*2**t,3e4),staleTime:300*1e3,refetchOnWindowFocus:!1}}})}function U({children:t}){const[n]=i.useState(()=>H()),s=_();return e.jsx(W,{translationManager:s,children:e.jsx(T,{client:n,children:e.jsx(B,{children:e.jsx(N,{children:e.jsx(F,{children:e.jsx(O,{children:e.jsxs(G,{children:[e.jsx(K,{}),t]})})})})})})})}function J({title:t,titleId:n,...s},o){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:o,"aria-labelledby":n},s),t?i.createElement("title",{id:n},t):null,i.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"}))}const X=i.forwardRef(J);function Z({title:t,titleId:n,...s},o){return i.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:o,"aria-labelledby":n},s),t?i.createElement("title",{id:n},t):null,i.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"}))}const ee=i.forwardRef(Z);function te({className:t=""}){const{t:n}=b(),s=(r,u)=>n(`CookieBanner.${r}`,u),[o,l]=i.useState(!1),[c,m]=i.useState(!1),[a,d]=i.useState(!1),[f,p]=i.useState("GENERAL"),[g,C]=i.useState({necessary:!0,analytics:!1,marketing:!1,preferences:!1});i.useEffect(()=>{(async()=>{if($()){l(!0);try{const[u,R]=await Promise.all([Q(),V()]);p(u?"GDPR":R?"CCPA":"GENERAL")}catch(u){console.error("Failed to detect region:",u),p("GENERAL")}}})()},[]);const w=async()=>{d(!0);try{const r={necessary:!0,analytics:!0,marketing:!0,preferences:!0};await Promise.resolve(y(r)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},k=async()=>{d(!0);try{const r={necessary:!0,analytics:!1,marketing:!1,preferences:!1};await Promise.resolve(y(r)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},P=async()=>{d(!0);try{await Promise.resolve(y(g)),l(!1)}catch(r){console.error("Failed to save cookie consent:",r)}finally{d(!1)}},E=r=>{r!=="necessary"&&C(u=>({...u,[r]:!u[r]}))},S=()=>{switch(f){case"GDPR":return{title:s("gdprTitle"),description:s("gdprDescription"),learnMore:s("gdprLearnMore")};case"CCPA":return{title:s("ccpaTitle"),description:s("ccpaDescription"),learnMore:s("ccpaLearnMore")};default:return{title:s("generalTitle"),description:s("generalDescription"),learnMore:s("generalLearnMore")}}};if(!o)return null;const h=S();return e.jsx("div",{className:t,style:{position:"fixed",bottom:0,left:0,right:0,zIndex:50,backgroundColor:"var(--semiont-bg-primary)",borderTop:"1px solid var(--semiont-border-primary)",boxShadow:"var(--semiont-shadow-lg)"},children:e.jsx("div",{style:{maxWidth:"80rem",margin:"0 auto",padding:"1rem 1.5rem"},children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"1.5rem",flexWrap:"wrap"},children:[e.jsxs("div",{style:{flex:1,minWidth:"300px"},children:[e.jsx("h3",{style:{fontSize:"1.125rem",fontWeight:600,color:"var(--semiont-text-primary)",marginBottom:"0.5rem"},children:h.title}),e.jsx("p",{style:{fontSize:"var(--semiont-text-sm, 0.875rem)",color:"var(--semiont-text-secondary)",marginBottom:"0.25rem"},children:h.description}),e.jsx("p",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)"},children:h.learnMore})]}),e.jsxs("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center",flexWrap:"wrap"},children:[e.jsxs("button",{type:"button",onClick:()=>m(!c),className:"semiont-button--secondary",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[s("customize"),c?e.jsx(ee,{style:{width:"1rem",height:"1rem"}}):e.jsx(X,{style:{width:"1rem",height:"1rem"}})]}),f!=="GDPR"&&e.jsx("button",{type:"button",onClick:k,disabled:a,className:"semiont-button--secondary",children:s(a?"saving":"rejectAll")}),e.jsx("button",{type:"button",onClick:w,disabled:a,className:"semiont-button--primary",children:s(a?"saving":"acceptAll")})]})]}),c&&e.jsx("div",{style:{borderTop:"1px solid var(--semiont-border-primary)",paddingTop:"1rem"},children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:[e.jsx("h4",{style:{fontSize:"1rem",fontWeight:500,color:"var(--semiont-text-primary)"},children:s("cookiePreferences")}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:q.map(r=>e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"0.75rem"},children:[e.jsx("div",{style:{display:"flex",alignItems:"center",height:"1.25rem"},children:e.jsx("input",{id:`cookie-${r.id}`,type:"checkbox",checked:g[r.id]||!1,onChange:()=>E(r.id),disabled:r.required||a,style:{accentColor:"var(--semiont-color-primary-600, #2563eb)"}})}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("label",{htmlFor:`cookie-${r.id}`,style:{fontSize:"var(--semiont-text-sm, 0.875rem)",fontWeight:500,color:"var(--semiont-text-primary)",cursor:"pointer"},children:[r.name,r.required&&e.jsx("span",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)",marginLeft:"0.25rem"},children:s("required")})]}),e.jsx("p",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-secondary)",marginTop:"0.25rem"},children:r.description}),e.jsxs("details",{style:{marginTop:"0.25rem"},children:[e.jsx("summary",{style:{fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-color-primary-600, #2563eb)",cursor:"pointer"},children:s("viewCookies")}),e.jsx("div",{style:{marginTop:"0.25rem",fontSize:"var(--semiont-text-xs, 0.75rem)",color:"var(--semiont-text-tertiary)"},children:r.cookies.join(", ")})]})]})]},r.id))}),e.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"0.75rem",paddingTop:"1rem"},children:[e.jsx("button",{type:"button",onClick:()=>m(!1),className:"semiont-button--secondary",children:s("cancel")}),e.jsx("button",{type:"button",onClick:P,disabled:a,className:"semiont-button--primary",children:s(a?"saving":"savePreferences")})]})]})})]})})})}function le(){return e.jsxs(U,{children:[e.jsx(I,{}),e.jsx(M,{}),e.jsx(te,{})]})}export{le as default};
2
+ //# sourceMappingURL=layout-CsUwTEip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-BFanPfv_.js","sources":["../../src/components/knowledge/NavigationHandler.tsx","../../src/hooks/useMergedTranslationManager.ts","../../src/app/providers.tsx","../../../../node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ChevronUpIcon.js","../../src/components/CookieBanner.tsx","../../src/app/[locale]/layout.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useEventSubscriptions } from '@semiont/react-ui';\n\n/**\n * NavigationHandler - Connects NavigationEventBus to Next.js router\n *\n * This component subscribes to navigation events from @semiont/react-ui\n * components and handles them using Next.js client-side routing.\n *\n * Benefits:\n * - Client-side navigation (no page reload)\n * - Preserves React state\n * - Faster navigation\n * - Better UX\n *\n * Must be mounted in app layout to handle all navigation requests.\n */\nexport function NavigationHandler() {\n const router = useRouter();\n\n // Handle external navigation events\n const handleExternalNavigate = useCallback(({ url, cancelFallback }: { url: string; resourceId?: string; cancelFallback: () => void }) => {\n cancelFallback(); // Prevent window.location fallback since we're handling with client-side routing\n router.push(url);\n }, [router]);\n\n // Handle router push events\n const handleRouterPush = useCallback(({ path }: { path: string; reason?: string }) => {\n router.push(path);\n }, [router]);\n\n useEventSubscriptions({\n 'browse:external-navigate': handleExternalNavigate,\n 'browse:router-push': handleRouterPush,\n });\n\n // This component only manages navigation, doesn't render anything\n return null;\n}\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { TranslationManager } from '@semiont/react-ui';\n\ntype Messages = Record<string, Record<string, string>>;\n\n/**\n * Translation Manager for Frontend\n *\n * Wraps react-i18next. The messages JSON (loaded by i18next-http-backend) has\n * the same flat namespace structure: { \"Namespace\": { \"key\": \"value\" } }.\n * TranslationManager.t(namespace, key) maps directly to this structure.\n */\nexport function useMergedTranslationManager(): TranslationManager {\n const { i18n } = useTranslation();\n\n return useMemo(() => {\n return {\n t: (namespace: string, key: string, params?: Record<string, unknown>): string => {\n const messages = i18n.getResourceBundle(i18n.language, 'translation') as Messages | undefined;\n let translation = messages?.[namespace]?.[key];\n\n if (!translation) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`Translation not found: ${namespace}.${key} (locale: ${i18n.language})`);\n }\n return `${namespace}.${key}`;\n }\n\n if (params && typeof translation === 'string') {\n let result = translation;\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n result = result.replace(new RegExp(`\\\\{${paramKey}\\\\}`, 'g'), String(paramValue));\n });\n return result;\n }\n\n return translation;\n },\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [i18n, i18n.language]);\n}\n","import React, { useState } from 'react';\nimport { QueryClient, QueryClientProvider, QueryCache, MutationCache } from '@tanstack/react-query';\nimport {\n ToastProvider,\n LiveRegionProvider,\n TranslationProvider,\n ThemeProvider,\n EventBusProvider,\n notifySessionExpired,\n notifyPermissionDenied,\n} from '@semiont/react-ui';\nimport { KeyboardShortcutsProvider } from '@/contexts/KeyboardShortcutsContext';\nimport { NavigationHandler } from '@/components/knowledge/NavigationHandler';\nimport { APIError } from '@semiont/api-client';\nimport { useMergedTranslationManager } from '@/hooks/useMergedTranslationManager';\n\n/**\n * Create a minimal QueryClient with error handlers and retry logic.\n * Authentication is handled by @semiont/api-client via lib/api-hooks.\n *\n * SAFETY NET — the handlers below run only when the api-client's\n * `tokenRefresher` did NOT recover a 401. Two cases:\n *\n * 1. The api-client that issued the request has no `tokenRefresher`\n * configured. KnowledgeBasePanel's bootstrap auth calls go through\n * a fresh client without a refresher, so a 401 from those reaches\n * this handler directly. (Bootstrap calls shouldn't 401 in normal\n * operation, but this handler keeps us covered if they do.)\n *\n * 2. The refresh attempt itself failed. In that case `refreshActive`\n * already set `sessionExpiredAt` BEFORE the 401 propagated, so the\n * `notifySessionExpired` call here is idempotent — it just sets the\n * same flag that's already set.\n *\n * Don't delete this handler — case (1) is still real. But understand that\n * for the protected-layout flows (the bulk of the app), it almost never\n * fires because the api-client's beforeRetry hook handles 401s transparently.\n *\n * 401/403 errors route through module-scoped notify functions registered by\n * the active KnowledgeBaseSessionProvider (mounted inside the protected\n * AuthShell). On pre-app routes where no provider is mounted, the calls are\n * no-ops.\n */\nfunction createQueryClient() {\n return new QueryClient({\n queryCache: new QueryCache({\n onError: (error) => {\n if (error instanceof APIError) {\n if (error.status === 401) {\n notifySessionExpired('Your session has expired. Please sign in again.');\n } else if (error.status === 403) {\n notifyPermissionDenied('You do not have permission to access this resource.');\n }\n }\n },\n }),\n mutationCache: new MutationCache({\n onError: (error) => {\n if (error instanceof APIError) {\n if (error.status === 401) {\n notifySessionExpired('Your session has expired. Please sign in again.');\n } else if (error.status === 403) {\n notifyPermissionDenied('You do not have permission to perform this action.');\n }\n }\n },\n }),\n defaultOptions: {\n queries: {\n retry: (failureCount, error) => {\n // Don't retry on client errors (4xx) - these won't fix themselves\n if (error instanceof APIError) {\n // Never retry auth errors\n if (error.status === 401 || error.status === 403) {\n return false;\n }\n // Never retry other client errors (400, 404, 422, etc.)\n if (error.status >= 400 && error.status < 500) {\n return false;\n }\n }\n // Only retry server errors (5xx) or network errors, max 3 times\n return failureCount < 3;\n },\n retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), // Exponential backoff: 1s, 2s, 4s, max 30s\n staleTime: 5 * 60 * 1000, // 5 minutes\n refetchOnWindowFocus: false, // Prevent unnecessary refetches when window regains focus\n },\n },\n });\n}\n\n/**\n * Root Provider Composition for Semiont Frontend.\n *\n * Wires up GLOBAL contexts that every page needs — auth-independent.\n *\n * Auth-dependent providers (KnowledgeBaseSessionProvider, ProtectedErrorBoundary,\n * SessionExpiredModal, PermissionDeniedModal) are bundled in `AuthShell` and\n * mounted only in protected layouts (know/, admin/, moderate/, auth/welcome/).\n * Pre-app routes (landing, OAuth flow) intentionally do NOT mount AuthShell —\n * they have no need to validate JWTs.\n *\n * ApiClientProvider is added in feature-specific layouts (e.g. /know) that\n * require API access. Public pages don't need it.\n *\n * Provider order — outer to inner:\n * 1. TranslationProvider — i18n\n * 2. QueryClientProvider — React Query\n * 3. ToastProvider — toast notifications\n * 4. LiveRegionProvider — a11y live region\n * 5. KeyboardShortcutsProvider — keyboard shortcuts\n * 6. ThemeProvider — theme\n * 7. EventBusProvider — RxJS event bus\n * + NavigationHandler\n */\nexport function Providers({ children }: { children: React.ReactNode }) {\n const [queryClient] = useState(() => createQueryClient());\n const translationManager = useMergedTranslationManager();\n\n return (\n <TranslationProvider translationManager={translationManager}>\n <QueryClientProvider client={queryClient}>\n <ToastProvider>\n <LiveRegionProvider>\n <KeyboardShortcutsProvider>\n <ThemeProvider>\n <EventBusProvider>\n <NavigationHandler />\n {children}\n </EventBusProvider>\n </ThemeProvider>\n </KeyboardShortcutsProvider>\n </LiveRegionProvider>\n </ToastProvider>\n </QueryClientProvider>\n </TranslationProvider>\n );\n}\n","import * as React from \"react\";\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m19.5 8.25-7.5 7.5-7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronDownIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ChevronUpIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m4.5 15.75 7.5-7.5 7.5 7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronUpIcon);\nexport default ForwardRef;","\"use client\";\n\nimport React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n getCookieConsent,\n setCookieConsent,\n shouldShowBanner,\n COOKIE_CATEGORIES,\n CookieConsent,\n isCCPAApplicable,\n isGDPRApplicable,\n type CookieCategory\n} from '@/lib/cookies';\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline';\n\ninterface CookieBannerProps {\n className?: string;\n}\n\nexport function CookieBanner({ className = '' }: CookieBannerProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`CookieBanner.${k}`, p as any) as string;\n const [isVisible, setIsVisible] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [region, setRegion] = useState<'GDPR' | 'CCPA' | 'GENERAL'>('GENERAL');\n const [consent, setConsent] = useState<Partial<CookieConsent>>({\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n });\n\n useEffect(() => {\n const checkVisibility = async () => {\n if (shouldShowBanner()) {\n setIsVisible(true);\n\n try {\n // Determine applicable regulation\n const [isGDPR, isCCPA] = await Promise.all([\n isGDPRApplicable(),\n isCCPAApplicable()\n ]);\n\n if (isGDPR) {\n setRegion('GDPR');\n } else if (isCCPA) {\n setRegion('CCPA');\n } else {\n setRegion('GENERAL');\n }\n } catch (error) {\n // If region detection fails, default to GENERAL\n console.error('Failed to detect region:', error);\n setRegion('GENERAL');\n }\n }\n };\n\n checkVisibility();\n }, []);\n\n const handleAcceptAll = async () => {\n setIsLoading(true);\n\n try {\n const fullConsent = {\n necessary: true,\n analytics: true,\n marketing: true,\n preferences: true\n };\n\n await Promise.resolve(setCookieConsent(fullConsent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleRejectAll = async () => {\n setIsLoading(true);\n\n try {\n const minimalConsent = {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n };\n\n await Promise.resolve(setCookieConsent(minimalConsent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleSavePreferences = async () => {\n setIsLoading(true);\n\n try {\n await Promise.resolve(setCookieConsent(consent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleCategoryToggle = (categoryId: keyof Omit<CookieConsent, 'timestamp' | 'version'>) => {\n if (categoryId === 'necessary') return; // Can't toggle necessary cookies\n\n setConsent(prev => ({\n ...prev,\n [categoryId]: !prev[categoryId]\n }));\n };\n\n const getBannerText = () => {\n switch (region) {\n case 'GDPR':\n return {\n title: t('gdprTitle'),\n description: t('gdprDescription'),\n learnMore: t('gdprLearnMore')\n };\n case 'CCPA':\n return {\n title: t('ccpaTitle'),\n description: t('ccpaDescription'),\n learnMore: t('ccpaLearnMore')\n };\n default:\n return {\n title: t('generalTitle'),\n description: t('generalDescription'),\n learnMore: t('generalLearnMore')\n };\n }\n };\n\n if (!isVisible) return null;\n\n const bannerText = getBannerText();\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 50,\n backgroundColor: 'var(--semiont-bg-primary)',\n borderTop: '1px solid var(--semiont-border-primary)',\n boxShadow: 'var(--semiont-shadow-lg)',\n }}\n >\n <div style={{ maxWidth: '80rem', margin: '0 auto', padding: '1rem 1.5rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n {/* Main banner content */}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '1.5rem', flexWrap: 'wrap' }}>\n <div style={{ flex: 1, minWidth: '300px' }}>\n <h3 style={{\n fontSize: '1.125rem',\n fontWeight: 600,\n color: 'var(--semiont-text-primary)',\n marginBottom: '0.5rem',\n }}>\n {bannerText.title}\n </h3>\n <p style={{\n fontSize: 'var(--semiont-text-sm, 0.875rem)',\n color: 'var(--semiont-text-secondary)',\n marginBottom: '0.25rem',\n }}>\n {bannerText.description}\n </p>\n <p style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n }}>\n {bannerText.learnMore}\n </p>\n </div>\n\n {/* Action buttons */}\n <div style={{ display: 'flex', gap: '0.75rem', alignItems: 'center', flexWrap: 'wrap' }}>\n <button\n type=\"button\"\n onClick={() => setShowDetails(!showDetails)}\n className=\"semiont-button--secondary\"\n style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}\n >\n {t('customize')}\n {showDetails ? (\n <ChevronUpIcon style={{ width: '1rem', height: '1rem' }} />\n ) : (\n <ChevronDownIcon style={{ width: '1rem', height: '1rem' }} />\n )}\n </button>\n\n {region !== 'GDPR' && (\n <button\n type=\"button\"\n onClick={handleRejectAll}\n disabled={isLoading}\n className=\"semiont-button--secondary\"\n >\n {isLoading ? t('saving') : t('rejectAll')}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleAcceptAll}\n disabled={isLoading}\n className=\"semiont-button--primary\"\n >\n {isLoading ? t('saving') : t('acceptAll')}\n </button>\n </div>\n </div>\n\n {/* Detailed preferences */}\n {showDetails && (\n <div style={{\n borderTop: '1px solid var(--semiont-border-primary)',\n paddingTop: '1rem',\n }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <h4 style={{\n fontSize: '1rem',\n fontWeight: 500,\n color: 'var(--semiont-text-primary)',\n }}>\n {t('cookiePreferences')}\n </h4>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n {COOKIE_CATEGORIES.map((category: CookieCategory) => (\n <div key={category.id} style={{ display: 'flex', alignItems: 'flex-start', gap: '0.75rem' }}>\n <div style={{ display: 'flex', alignItems: 'center', height: '1.25rem' }}>\n <input\n id={`cookie-${category.id}`}\n type=\"checkbox\"\n checked={consent[category.id] || false}\n onChange={() => handleCategoryToggle(category.id)}\n disabled={category.required || isLoading}\n style={{ accentColor: 'var(--semiont-color-primary-600, #2563eb)' }}\n />\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <label\n htmlFor={`cookie-${category.id}`}\n style={{\n fontSize: 'var(--semiont-text-sm, 0.875rem)',\n fontWeight: 500,\n color: 'var(--semiont-text-primary)',\n cursor: 'pointer',\n }}\n >\n {category.name}\n {category.required && (\n <span style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n marginLeft: '0.25rem',\n }}>\n {t('required')}\n </span>\n )}\n </label>\n <p style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-secondary)',\n marginTop: '0.25rem',\n }}>\n {category.description}\n </p>\n <details style={{ marginTop: '0.25rem' }}>\n <summary style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-color-primary-600, #2563eb)',\n cursor: 'pointer',\n }}>\n {t('viewCookies')}\n </summary>\n <div style={{\n marginTop: '0.25rem',\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n }}>\n {category.cookies.join(', ')}\n </div>\n </details>\n </div>\n </div>\n ))}\n </div>\n\n <div style={{\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '0.75rem',\n paddingTop: '1rem',\n }}>\n <button\n type=\"button\"\n onClick={() => setShowDetails(false)}\n className=\"semiont-button--secondary\"\n >\n {t('cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleSavePreferences}\n disabled={isLoading}\n className=\"semiont-button--primary\"\n >\n {isLoading ? t('saving') : t('savePreferences')}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport default CookieBanner;\n","import { Outlet } from 'react-router-dom';\nimport { Providers } from '../providers';\nimport { CookieBanner } from '@/components/CookieBanner';\nimport { SkipLinks } from '@semiont/react-ui';\n\n/**\n * Locale Layout — root layout for all /:locale/* routes.\n *\n * Mounts only auth-independent providers. Auth-dependent providers\n * (KnowledgeBaseProvider, AuthProvider, SessionProvider, modals)\n * are mounted via AuthShell in protected layouts (know/, admin/,\n * moderate/, auth/welcome/).\n */\nexport default function LocaleLayout() {\n return (\n <Providers>\n <SkipLinks />\n <Outlet />\n <CookieBanner />\n </Providers>\n );\n}\n"],"names":["NavigationHandler","router","useRouter","handleExternalNavigate","useCallback","url","cancelFallback","handleRouterPush","path","useEventSubscriptions","useMergedTranslationManager","i18n","useTranslation","useMemo","namespace","key","params","messages","translation","_a","result","paramKey","paramValue","createQueryClient","QueryClient","QueryCache","error","APIError","notifySessionExpired","notifyPermissionDenied","MutationCache","failureCount","attemptIndex","Providers","children","queryClient","useState","translationManager","TranslationProvider","jsx","QueryClientProvider","ToastProvider","LiveRegionProvider","KeyboardShortcutsProvider","ThemeProvider","EventBusProvider","ChevronDownIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","ChevronUpIcon","CookieBanner","className","_t","t","k","p","isVisible","setIsVisible","showDetails","setShowDetails","isLoading","setIsLoading","region","setRegion","consent","setConsent","useEffect","shouldShowBanner","isGDPR","isCCPA","isGDPRApplicable","isCCPAApplicable","handleAcceptAll","fullConsent","setCookieConsent","handleRejectAll","minimalConsent","handleSavePreferences","handleCategoryToggle","categoryId","prev","getBannerText","bannerText","jsxs","COOKIE_CATEGORIES","category","LocaleLayout","SkipLinks","Outlet"],"mappings":"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","x_google_ignoreList":[3,4]}
1
+ {"version":3,"file":"layout-CsUwTEip.js","sources":["../../src/components/knowledge/NavigationHandler.tsx","../../src/hooks/useMergedTranslationManager.ts","../../src/app/providers.tsx","../../../../node_modules/@heroicons/react/24/outline/esm/ChevronDownIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ChevronUpIcon.js","../../src/components/CookieBanner.tsx","../../src/app/[locale]/layout.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useEventSubscriptions } from '@semiont/react-ui';\n\n/**\n * NavigationHandler - Connects NavigationEventBus to Next.js router\n *\n * This component subscribes to navigation events from @semiont/react-ui\n * components and handles them using Next.js client-side routing.\n *\n * Benefits:\n * - Client-side navigation (no page reload)\n * - Preserves React state\n * - Faster navigation\n * - Better UX\n *\n * Must be mounted in app layout to handle all navigation requests.\n */\nexport function NavigationHandler() {\n const router = useRouter();\n\n // Handle external navigation events\n const handleExternalNavigate = useCallback(({ url, cancelFallback }: { url: string; resourceId?: string; cancelFallback: () => void }) => {\n cancelFallback(); // Prevent window.location fallback since we're handling with client-side routing\n router.push(url);\n }, [router]);\n\n // Handle router push events\n const handleRouterPush = useCallback(({ path }: { path: string; reason?: string }) => {\n router.push(path);\n }, [router]);\n\n useEventSubscriptions({\n 'browse:external-navigate': handleExternalNavigate,\n 'browse:router-push': handleRouterPush,\n });\n\n // This component only manages navigation, doesn't render anything\n return null;\n}\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type { TranslationManager } from '@semiont/react-ui';\n\ntype Messages = Record<string, Record<string, string>>;\n\n/**\n * Translation Manager for Frontend\n *\n * Wraps react-i18next. The messages JSON (loaded by i18next-http-backend) has\n * the same flat namespace structure: { \"Namespace\": { \"key\": \"value\" } }.\n * TranslationManager.t(namespace, key) maps directly to this structure.\n */\nexport function useMergedTranslationManager(): TranslationManager {\n const { i18n } = useTranslation();\n\n return useMemo(() => {\n return {\n t: (namespace: string, key: string, params?: Record<string, unknown>): string => {\n const messages = i18n.getResourceBundle(i18n.language, 'translation') as Messages | undefined;\n let translation = messages?.[namespace]?.[key];\n\n if (!translation) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`Translation not found: ${namespace}.${key} (locale: ${i18n.language})`);\n }\n return `${namespace}.${key}`;\n }\n\n if (params && typeof translation === 'string') {\n let result = translation;\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n result = result.replace(new RegExp(`\\\\{${paramKey}\\\\}`, 'g'), String(paramValue));\n });\n return result;\n }\n\n return translation;\n },\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [i18n, i18n.language]);\n}\n","import React, { useState } from 'react';\nimport { QueryClient, QueryClientProvider, QueryCache, MutationCache } from '@tanstack/react-query';\nimport {\n ToastProvider,\n LiveRegionProvider,\n TranslationProvider,\n ThemeProvider,\n EventBusProvider,\n notifySessionExpired,\n notifyPermissionDenied,\n} from '@semiont/react-ui';\nimport { KeyboardShortcutsProvider } from '@/contexts/KeyboardShortcutsContext';\nimport { NavigationHandler } from '@/components/knowledge/NavigationHandler';\nimport { APIError } from '@semiont/api-client';\nimport { useMergedTranslationManager } from '@/hooks/useMergedTranslationManager';\n\n/**\n * Create a minimal QueryClient with error handlers and retry logic.\n * Authentication is handled by @semiont/api-client via lib/api-hooks.\n *\n * SAFETY NET — the handlers below run only when the api-client's\n * `tokenRefresher` did NOT recover a 401. Two cases:\n *\n * 1. The api-client that issued the request has no `tokenRefresher`\n * configured. KnowledgeBasePanel's bootstrap auth calls go through\n * a fresh client without a refresher, so a 401 from those reaches\n * this handler directly. (Bootstrap calls shouldn't 401 in normal\n * operation, but this handler keeps us covered if they do.)\n *\n * 2. The refresh attempt itself failed. In that case `refreshActive`\n * already set `sessionExpiredAt` BEFORE the 401 propagated, so the\n * `notifySessionExpired` call here is idempotent — it just sets the\n * same flag that's already set.\n *\n * Don't delete this handler — case (1) is still real. But understand that\n * for the protected-layout flows (the bulk of the app), it almost never\n * fires because the api-client's beforeRetry hook handles 401s transparently.\n *\n * 401/403 errors route through module-scoped notify functions registered by\n * the active KnowledgeBaseSessionProvider (mounted inside the protected\n * AuthShell). On pre-app routes where no provider is mounted, the calls are\n * no-ops.\n */\nfunction createQueryClient() {\n return new QueryClient({\n queryCache: new QueryCache({\n onError: (error) => {\n if (error instanceof APIError) {\n if (error.status === 401) {\n notifySessionExpired('Your session has expired. Please sign in again.');\n } else if (error.status === 403) {\n notifyPermissionDenied('You do not have permission to access this resource.');\n }\n }\n },\n }),\n mutationCache: new MutationCache({\n onError: (error) => {\n if (error instanceof APIError) {\n if (error.status === 401) {\n notifySessionExpired('Your session has expired. Please sign in again.');\n } else if (error.status === 403) {\n notifyPermissionDenied('You do not have permission to perform this action.');\n }\n }\n },\n }),\n defaultOptions: {\n queries: {\n retry: (failureCount, error) => {\n // Don't retry on client errors (4xx) - these won't fix themselves\n if (error instanceof APIError) {\n // Never retry auth errors\n if (error.status === 401 || error.status === 403) {\n return false;\n }\n // Never retry other client errors (400, 404, 422, etc.)\n if (error.status >= 400 && error.status < 500) {\n return false;\n }\n }\n // Only retry server errors (5xx) or network errors, max 3 times\n return failureCount < 3;\n },\n retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000), // Exponential backoff: 1s, 2s, 4s, max 30s\n staleTime: 5 * 60 * 1000, // 5 minutes\n refetchOnWindowFocus: false, // Prevent unnecessary refetches when window regains focus\n },\n },\n });\n}\n\n/**\n * Root Provider Composition for Semiont Frontend.\n *\n * Wires up GLOBAL contexts that every page needs — auth-independent.\n *\n * Auth-dependent providers (KnowledgeBaseSessionProvider, ProtectedErrorBoundary,\n * SessionExpiredModal, PermissionDeniedModal) are bundled in `AuthShell` and\n * mounted only in protected layouts (know/, admin/, moderate/, auth/welcome/).\n * Pre-app routes (landing, OAuth flow) intentionally do NOT mount AuthShell —\n * they have no need to validate JWTs.\n *\n * ApiClientProvider is added in feature-specific layouts (e.g. /know) that\n * require API access. Public pages don't need it.\n *\n * Provider order — outer to inner:\n * 1. TranslationProvider — i18n\n * 2. QueryClientProvider — React Query\n * 3. ToastProvider — toast notifications\n * 4. LiveRegionProvider — a11y live region\n * 5. KeyboardShortcutsProvider — keyboard shortcuts\n * 6. ThemeProvider — theme\n * 7. EventBusProvider — RxJS event bus\n * + NavigationHandler\n */\nexport function Providers({ children }: { children: React.ReactNode }) {\n const [queryClient] = useState(() => createQueryClient());\n const translationManager = useMergedTranslationManager();\n\n return (\n <TranslationProvider translationManager={translationManager}>\n <QueryClientProvider client={queryClient}>\n <ToastProvider>\n <LiveRegionProvider>\n <KeyboardShortcutsProvider>\n <ThemeProvider>\n <EventBusProvider>\n <NavigationHandler />\n {children}\n </EventBusProvider>\n </ThemeProvider>\n </KeyboardShortcutsProvider>\n </LiveRegionProvider>\n </ToastProvider>\n </QueryClientProvider>\n </TranslationProvider>\n );\n}\n","import * as React from \"react\";\nfunction ChevronDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m19.5 8.25-7.5 7.5-7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronDownIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ChevronUpIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"m4.5 15.75 7.5-7.5 7.5 7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronUpIcon);\nexport default ForwardRef;","\"use client\";\n\nimport React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n getCookieConsent,\n setCookieConsent,\n shouldShowBanner,\n COOKIE_CATEGORIES,\n CookieConsent,\n isCCPAApplicable,\n isGDPRApplicable,\n type CookieCategory\n} from '@/lib/cookies';\nimport { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline';\n\ninterface CookieBannerProps {\n className?: string;\n}\n\nexport function CookieBanner({ className = '' }: CookieBannerProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`CookieBanner.${k}`, p as any) as string;\n const [isVisible, setIsVisible] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [region, setRegion] = useState<'GDPR' | 'CCPA' | 'GENERAL'>('GENERAL');\n const [consent, setConsent] = useState<Partial<CookieConsent>>({\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n });\n\n useEffect(() => {\n const checkVisibility = async () => {\n if (shouldShowBanner()) {\n setIsVisible(true);\n\n try {\n // Determine applicable regulation\n const [isGDPR, isCCPA] = await Promise.all([\n isGDPRApplicable(),\n isCCPAApplicable()\n ]);\n\n if (isGDPR) {\n setRegion('GDPR');\n } else if (isCCPA) {\n setRegion('CCPA');\n } else {\n setRegion('GENERAL');\n }\n } catch (error) {\n // If region detection fails, default to GENERAL\n console.error('Failed to detect region:', error);\n setRegion('GENERAL');\n }\n }\n };\n\n checkVisibility();\n }, []);\n\n const handleAcceptAll = async () => {\n setIsLoading(true);\n\n try {\n const fullConsent = {\n necessary: true,\n analytics: true,\n marketing: true,\n preferences: true\n };\n\n await Promise.resolve(setCookieConsent(fullConsent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleRejectAll = async () => {\n setIsLoading(true);\n\n try {\n const minimalConsent = {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n };\n\n await Promise.resolve(setCookieConsent(minimalConsent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleSavePreferences = async () => {\n setIsLoading(true);\n\n try {\n await Promise.resolve(setCookieConsent(consent));\n setIsVisible(false);\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleCategoryToggle = (categoryId: keyof Omit<CookieConsent, 'timestamp' | 'version'>) => {\n if (categoryId === 'necessary') return; // Can't toggle necessary cookies\n\n setConsent(prev => ({\n ...prev,\n [categoryId]: !prev[categoryId]\n }));\n };\n\n const getBannerText = () => {\n switch (region) {\n case 'GDPR':\n return {\n title: t('gdprTitle'),\n description: t('gdprDescription'),\n learnMore: t('gdprLearnMore')\n };\n case 'CCPA':\n return {\n title: t('ccpaTitle'),\n description: t('ccpaDescription'),\n learnMore: t('ccpaLearnMore')\n };\n default:\n return {\n title: t('generalTitle'),\n description: t('generalDescription'),\n learnMore: t('generalLearnMore')\n };\n }\n };\n\n if (!isVisible) return null;\n\n const bannerText = getBannerText();\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 50,\n backgroundColor: 'var(--semiont-bg-primary)',\n borderTop: '1px solid var(--semiont-border-primary)',\n boxShadow: 'var(--semiont-shadow-lg)',\n }}\n >\n <div style={{ maxWidth: '80rem', margin: '0 auto', padding: '1rem 1.5rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n {/* Main banner content */}\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '1.5rem', flexWrap: 'wrap' }}>\n <div style={{ flex: 1, minWidth: '300px' }}>\n <h3 style={{\n fontSize: '1.125rem',\n fontWeight: 600,\n color: 'var(--semiont-text-primary)',\n marginBottom: '0.5rem',\n }}>\n {bannerText.title}\n </h3>\n <p style={{\n fontSize: 'var(--semiont-text-sm, 0.875rem)',\n color: 'var(--semiont-text-secondary)',\n marginBottom: '0.25rem',\n }}>\n {bannerText.description}\n </p>\n <p style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n }}>\n {bannerText.learnMore}\n </p>\n </div>\n\n {/* Action buttons */}\n <div style={{ display: 'flex', gap: '0.75rem', alignItems: 'center', flexWrap: 'wrap' }}>\n <button\n type=\"button\"\n onClick={() => setShowDetails(!showDetails)}\n className=\"semiont-button--secondary\"\n style={{ display: 'flex', alignItems: 'center', gap: '0.25rem' }}\n >\n {t('customize')}\n {showDetails ? (\n <ChevronUpIcon style={{ width: '1rem', height: '1rem' }} />\n ) : (\n <ChevronDownIcon style={{ width: '1rem', height: '1rem' }} />\n )}\n </button>\n\n {region !== 'GDPR' && (\n <button\n type=\"button\"\n onClick={handleRejectAll}\n disabled={isLoading}\n className=\"semiont-button--secondary\"\n >\n {isLoading ? t('saving') : t('rejectAll')}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleAcceptAll}\n disabled={isLoading}\n className=\"semiont-button--primary\"\n >\n {isLoading ? t('saving') : t('acceptAll')}\n </button>\n </div>\n </div>\n\n {/* Detailed preferences */}\n {showDetails && (\n <div style={{\n borderTop: '1px solid var(--semiont-border-primary)',\n paddingTop: '1rem',\n }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>\n <h4 style={{\n fontSize: '1rem',\n fontWeight: 500,\n color: 'var(--semiont-text-primary)',\n }}>\n {t('cookiePreferences')}\n </h4>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n {COOKIE_CATEGORIES.map((category: CookieCategory) => (\n <div key={category.id} style={{ display: 'flex', alignItems: 'flex-start', gap: '0.75rem' }}>\n <div style={{ display: 'flex', alignItems: 'center', height: '1.25rem' }}>\n <input\n id={`cookie-${category.id}`}\n type=\"checkbox\"\n checked={consent[category.id] || false}\n onChange={() => handleCategoryToggle(category.id)}\n disabled={category.required || isLoading}\n style={{ accentColor: 'var(--semiont-color-primary-600, #2563eb)' }}\n />\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <label\n htmlFor={`cookie-${category.id}`}\n style={{\n fontSize: 'var(--semiont-text-sm, 0.875rem)',\n fontWeight: 500,\n color: 'var(--semiont-text-primary)',\n cursor: 'pointer',\n }}\n >\n {category.name}\n {category.required && (\n <span style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n marginLeft: '0.25rem',\n }}>\n {t('required')}\n </span>\n )}\n </label>\n <p style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-secondary)',\n marginTop: '0.25rem',\n }}>\n {category.description}\n </p>\n <details style={{ marginTop: '0.25rem' }}>\n <summary style={{\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-color-primary-600, #2563eb)',\n cursor: 'pointer',\n }}>\n {t('viewCookies')}\n </summary>\n <div style={{\n marginTop: '0.25rem',\n fontSize: 'var(--semiont-text-xs, 0.75rem)',\n color: 'var(--semiont-text-tertiary)',\n }}>\n {category.cookies.join(', ')}\n </div>\n </details>\n </div>\n </div>\n ))}\n </div>\n\n <div style={{\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '0.75rem',\n paddingTop: '1rem',\n }}>\n <button\n type=\"button\"\n onClick={() => setShowDetails(false)}\n className=\"semiont-button--secondary\"\n >\n {t('cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleSavePreferences}\n disabled={isLoading}\n className=\"semiont-button--primary\"\n >\n {isLoading ? t('saving') : t('savePreferences')}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport default CookieBanner;\n","import { Outlet } from 'react-router-dom';\nimport { Providers } from '../providers';\nimport { CookieBanner } from '@/components/CookieBanner';\nimport { SkipLinks } from '@semiont/react-ui';\n\n/**\n * Locale Layout — root layout for all /:locale/* routes.\n *\n * Mounts only auth-independent providers. Auth-dependent providers\n * (KnowledgeBaseProvider, AuthProvider, SessionProvider, modals)\n * are mounted via AuthShell in protected layouts (know/, admin/,\n * moderate/, auth/welcome/).\n */\nexport default function LocaleLayout() {\n return (\n <Providers>\n <SkipLinks />\n <Outlet />\n <CookieBanner />\n </Providers>\n );\n}\n"],"names":["NavigationHandler","router","useRouter","handleExternalNavigate","useCallback","url","cancelFallback","handleRouterPush","path","useEventSubscriptions","useMergedTranslationManager","i18n","useTranslation","useMemo","namespace","key","params","messages","translation","_a","result","paramKey","paramValue","createQueryClient","QueryClient","QueryCache","error","APIError","notifySessionExpired","notifyPermissionDenied","MutationCache","failureCount","attemptIndex","Providers","children","queryClient","useState","translationManager","TranslationProvider","jsx","QueryClientProvider","ToastProvider","LiveRegionProvider","KeyboardShortcutsProvider","ThemeProvider","EventBusProvider","ChevronDownIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","ChevronUpIcon","CookieBanner","className","_t","t","k","p","isVisible","setIsVisible","showDetails","setShowDetails","isLoading","setIsLoading","region","setRegion","consent","setConsent","useEffect","shouldShowBanner","isGDPR","isCCPA","isGDPRApplicable","isCCPAApplicable","handleAcceptAll","fullConsent","setCookieConsent","handleRejectAll","minimalConsent","handleSavePreferences","handleCategoryToggle","categoryId","prev","getBannerText","bannerText","jsxs","COOKIE_CATEGORIES","category","LocaleLayout","SkipLinks","Outlet"],"mappings":"kYAkBO,SAASA,GAAoB,CAClC,MAAMC,EAASC,EAAA,EAGTC,EAAyBC,EAAAA,YAAY,CAAC,CAAE,IAAAC,EAAK,eAAAC,KAAuF,CACxIA,EAAA,EACAL,EAAO,KAAKI,CAAG,CACjB,EAAG,CAACJ,CAAM,CAAC,EAGLM,EAAmBH,EAAAA,YAAY,CAAC,CAAE,KAAAI,KAA8C,CACpFP,EAAO,KAAKO,CAAI,CAClB,EAAG,CAACP,CAAM,CAAC,EAEX,OAAAQ,EAAsB,CACpB,2BAA4BN,EAC5B,qBAAsBI,CAAA,CACvB,EAGM,IACT,CC1BO,SAASG,GAAkD,CAChE,KAAM,CAAE,KAAAC,CAAA,EAASC,EAAA,EAEjB,OAAOC,EAAAA,QAAQ,KACN,CACL,EAAG,CAACC,EAAmBC,EAAaC,IAA6C,OAC/E,MAAMC,EAAWN,EAAK,kBAAkBA,EAAK,SAAU,aAAa,EACpE,IAAIO,GAAcC,EAAAF,GAAA,YAAAA,EAAWH,KAAX,YAAAK,EAAwBJ,GAE1C,GAAI,CAACG,EAIH,MAAO,GAAGJ,CAAS,IAAIC,CAAG,GAG5B,GAAIC,GAAU,OAAOE,GAAgB,SAAU,CAC7C,IAAIE,EAASF,EACb,cAAO,QAAQF,CAAM,EAAE,QAAQ,CAAC,CAACK,EAAUC,CAAU,IAAM,CACzDF,EAASA,EAAO,QAAQ,IAAI,OAAO,MAAMC,CAAQ,MAAO,GAAG,EAAG,OAAOC,CAAU,CAAC,CAClF,CAAC,EACMF,CACT,CAEA,OAAOF,CACT,CAAA,GAGD,CAACP,EAAMA,EAAK,QAAQ,CAAC,CAC1B,CCCA,SAASY,GAAoB,CAC3B,OAAO,IAAIC,EAAY,CACrB,WAAY,IAAIC,EAAW,CACzB,QAAUC,GAAU,CACdA,aAAiBC,IACfD,EAAM,SAAW,IACnBE,EAAqB,iDAAiD,EAC7DF,EAAM,SAAW,KAC1BG,EAAuB,qDAAqD,EAGlF,CAAA,CACD,EACD,cAAe,IAAIC,EAAc,CAC/B,QAAUJ,GAAU,CACdA,aAAiBC,IACfD,EAAM,SAAW,IACnBE,EAAqB,iDAAiD,EAC7DF,EAAM,SAAW,KAC1BG,EAAuB,oDAAoD,EAGjF,CAAA,CACD,EACD,eAAgB,CACd,QAAS,CACP,MAAO,CAACE,EAAcL,IAEhBA,aAAiBC,IAEfD,EAAM,SAAW,KAAOA,EAAM,SAAW,KAIzCA,EAAM,QAAU,KAAOA,EAAM,OAAS,KACjC,GAIJK,EAAe,EAExB,WAAaC,GAAiB,KAAK,IAAI,IAAO,GAAKA,EAAc,GAAK,EACtE,UAAW,IAAS,IACpB,qBAAsB,EAAA,CACxB,CACF,CACD,CACH,CA0BO,SAASC,EAAU,CAAE,SAAAC,GAA2C,CACrE,KAAM,CAACC,CAAW,EAAIC,WAAS,IAAMb,GAAmB,EAClDc,EAAqB3B,EAAA,EAE3B,aACG4B,EAAA,CAAoB,mBAAAD,EACnB,SAAAE,EAAAA,IAACC,EAAA,CAAoB,OAAQL,EAC3B,SAAAI,EAAAA,IAACE,EAAA,CACC,SAAAF,EAAAA,IAACG,GACC,SAAAH,EAAAA,IAACI,EAAA,CACC,SAAAJ,MAACK,EAAA,CACC,gBAACC,EAAA,CACC,SAAA,CAAAN,EAAAA,IAACvC,EAAA,EAAkB,EAClBkC,CAAA,CAAA,CACH,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CACF,EACF,EACF,CAEJ,CCzIA,SAASY,EAAgB,CACvB,MAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,gBAAoB,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGF,EAAqBI,EAAAA,cAAoB,QAAS,CAC3D,GAAIH,CACR,EAAKD,CAAK,EAAI,KAAmBI,EAAAA,cAAoB,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,4BACP,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BC,EAAAA,WAAiBP,CAAe,ECvBjE,SAASQ,EAAc,CACrB,MAAAP,EACA,QAAAC,EACA,GAAGC,CACL,EAAGC,EAAQ,CACT,OAAoBC,gBAAoB,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAKD,EACL,kBAAmBF,CACvB,EAAKC,CAAK,EAAGF,EAAqBI,EAAAA,cAAoB,QAAS,CAC3D,GAAIH,CACR,EAAKD,CAAK,EAAI,KAAmBI,EAAAA,cAAoB,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,4BACP,CAAG,CAAC,CACJ,CACA,MAAMC,GAA2BC,EAAAA,WAAiBC,CAAa,ECJxD,SAASC,GAAa,CAAE,UAAAC,EAAY,IAAyB,CAClE,KAAM,CAAE,EAAGC,CAAA,EAAO7C,EAAA,EACZ8C,EAAI,CAACC,EAAWC,IAAgCH,EAAG,gBAAgBE,CAAC,GAAIC,CAAQ,EAChF,CAACC,EAAWC,CAAY,EAAI1B,EAAAA,SAAS,EAAK,EAC1C,CAAC2B,EAAaC,CAAc,EAAI5B,EAAAA,SAAS,EAAK,EAC9C,CAAC6B,EAAWC,CAAY,EAAI9B,EAAAA,SAAS,EAAK,EAC1C,CAAC+B,EAAQC,CAAS,EAAIhC,EAAAA,SAAsC,SAAS,EACrE,CAACiC,EAASC,CAAU,EAAIlC,WAAiC,CAC7D,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,EAAA,CACd,EAEDmC,EAAAA,UAAU,IAAM,EACU,SAAY,CAClC,GAAIC,IAAoB,CACtBV,EAAa,EAAI,EAEjB,GAAI,CAEF,KAAM,CAACW,EAAQC,CAAM,EAAI,MAAM,QAAQ,IAAI,CACzCC,EAAA,EACAC,EAAA,CAAiB,CAClB,EAGCR,EADEK,EACQ,OACDC,EACC,OAEA,SAJM,CAMpB,OAAShD,EAAO,CAEd,QAAQ,MAAM,2BAA4BA,CAAK,EAC/C0C,EAAU,SAAS,CACrB,CACF,CACF,GAEA,CACF,EAAG,CAAA,CAAE,EAEL,MAAMS,EAAkB,SAAY,CAClCX,EAAa,EAAI,EAEjB,GAAI,CACF,MAAMY,EAAc,CAClB,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,EAAA,EAGf,MAAM,QAAQ,QAAQC,EAAiBD,CAAW,CAAC,EACnDhB,EAAa,EAAK,CACpB,OAASpC,EAAO,CACd,QAAQ,MAAM,iCAAkCA,CAAK,CACvD,QAAA,CACEwC,EAAa,EAAK,CACpB,CACF,EAEMc,EAAkB,SAAY,CAClCd,EAAa,EAAI,EAEjB,GAAI,CACF,MAAMe,EAAiB,CACrB,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,EAAA,EAGf,MAAM,QAAQ,QAAQF,EAAiBE,CAAc,CAAC,EACtDnB,EAAa,EAAK,CACpB,OAASpC,EAAO,CACd,QAAQ,MAAM,iCAAkCA,CAAK,CACvD,QAAA,CACEwC,EAAa,EAAK,CACpB,CACF,EAEMgB,EAAwB,SAAY,CACxChB,EAAa,EAAI,EAEjB,GAAI,CACF,MAAM,QAAQ,QAAQa,EAAiBV,CAAO,CAAC,EAC/CP,EAAa,EAAK,CACpB,OAASpC,EAAO,CACd,QAAQ,MAAM,iCAAkCA,CAAK,CACvD,QAAA,CACEwC,EAAa,EAAK,CACpB,CACF,EAEMiB,EAAwBC,GAAmE,CAC3FA,IAAe,aAEnBd,EAAWe,IAAS,CAClB,GAAGA,EACH,CAACD,CAAU,EAAG,CAACC,EAAKD,CAAU,CAAA,EAC9B,CACJ,EAEME,EAAgB,IAAM,CAC1B,OAAQnB,EAAA,CACN,IAAK,OACH,MAAO,CACL,MAAOT,EAAE,WAAW,EACpB,YAAaA,EAAE,iBAAiB,EAChC,UAAWA,EAAE,eAAe,CAAA,EAEhC,IAAK,OACH,MAAO,CACL,MAAOA,EAAE,WAAW,EACpB,YAAaA,EAAE,iBAAiB,EAChC,UAAWA,EAAE,eAAe,CAAA,EAEhC,QACE,MAAO,CACL,MAAOA,EAAE,cAAc,EACvB,YAAaA,EAAE,oBAAoB,EACnC,UAAWA,EAAE,kBAAkB,CAAA,CACjC,CAEN,EAEA,GAAI,CAACG,EAAW,OAAO,KAEvB,MAAM0B,EAAaD,EAAA,EAEnB,OACE/C,EAAAA,IAAC,MAAA,CACC,UAAAiB,EACA,MAAO,CACL,SAAU,QACV,OAAQ,EACR,KAAM,EACN,MAAO,EACP,OAAQ,GACR,gBAAiB,4BACjB,UAAW,0CACX,UAAW,0BAAA,EAGb,SAAAjB,EAAAA,IAAC,OAAI,MAAO,CAAE,SAAU,QAAS,OAAQ,SAAU,QAAS,aAAA,EAC1D,SAAAiD,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,MAAA,EAE3D,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,gBAAiB,IAAK,SAAU,SAAU,QAC7G,SAAA,CAAAA,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,SAC/B,SAAA,CAAAjD,MAAC,MAAG,MAAO,CACT,SAAU,WACV,WAAY,IACZ,MAAO,8BACP,aAAc,QAAA,EAEb,WAAW,MACd,EACAA,MAAC,KAAE,MAAO,CACR,SAAU,mCACV,MAAO,gCACP,aAAc,SAAA,EAEb,WAAW,YACd,EACAA,MAAC,KAAE,MAAO,CACR,SAAU,kCACV,MAAO,8BAAA,EAEN,WAAW,SAAA,CACd,CAAA,EACF,EAGAiD,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,UAAW,WAAY,SAAU,SAAU,MAAA,EAC7E,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMxB,EAAe,CAACD,CAAW,EAC1C,UAAU,4BACV,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,SAAA,EAEpD,SAAA,CAAAL,EAAE,WAAW,EACbK,EACCxB,EAAAA,IAACe,GAAA,CAAc,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,EAAU,EAEzDf,EAAAA,IAACO,GAAgB,MAAO,CAAE,MAAO,OAAQ,OAAQ,OAAO,CAAG,CAAA,CAAA,CAAA,EAI9DqB,IAAW,QACV5B,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASyC,EACT,SAAUf,EACV,UAAU,4BAET,SAAYP,EAAZO,EAAc,SAAc,WAAN,CAAiB,CAAA,EAI5C1B,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASsC,EACT,SAAUZ,EACV,UAAU,0BAET,SAAYP,EAAZO,EAAc,SAAc,WAAN,CAAiB,CAAA,CAC1C,CAAA,CACF,CAAA,EACF,EAGCF,GACCxB,EAAAA,IAAC,MAAA,CAAI,MAAO,CACV,UAAW,0CACX,WAAY,MAAA,EAEZ,SAAAiD,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,MAAA,EAC3D,SAAA,CAAAjD,MAAC,MAAG,MAAO,CACT,SAAU,OACV,WAAY,IACZ,MAAO,6BAAA,EAEN,SAAAmB,EAAE,mBAAmB,EACxB,EAEAnB,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,cAAe,SAAU,IAAK,WAC1D,SAAAkD,EAAkB,IAAKC,GACtBF,EAAAA,KAAC,MAAA,CAAsB,MAAO,CAAE,QAAS,OAAQ,WAAY,aAAc,IAAK,SAAA,EAC9E,SAAA,CAAAjD,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,OAAQ,SAAA,EAC3D,SAAAA,EAAAA,IAAC,QAAA,CACC,GAAI,UAAUmD,EAAS,EAAE,GACzB,KAAK,WACL,QAASrB,EAAQqB,EAAS,EAAE,GAAK,GACjC,SAAU,IAAMP,EAAqBO,EAAS,EAAE,EAChD,SAAUA,EAAS,UAAYzB,EAC/B,MAAO,CAAE,YAAa,2CAAA,CAA4C,CAAA,EAEtE,EACAuB,OAAC,OAAI,MAAO,CAAE,KAAM,EAAG,SAAU,GAC/B,SAAA,CAAAA,EAAAA,KAAC,QAAA,CACC,QAAS,UAAUE,EAAS,EAAE,GAC9B,MAAO,CACL,SAAU,mCACV,WAAY,IACZ,MAAO,8BACP,OAAQ,SAAA,EAGT,SAAA,CAAAA,EAAS,KACTA,EAAS,UACRnD,EAAAA,IAAC,OAAA,CAAK,MAAO,CACX,SAAU,kCACV,MAAO,+BACP,WAAY,SAAA,EAEX,SAAAmB,EAAE,UAAU,CAAA,CACf,CAAA,CAAA,CAAA,EAGJnB,MAAC,KAAE,MAAO,CACR,SAAU,kCACV,MAAO,gCACP,UAAW,SAAA,EAEV,WAAS,YACZ,SACC,UAAA,CAAQ,MAAO,CAAE,UAAW,WAC3B,SAAA,CAAAA,MAAC,WAAQ,MAAO,CACd,SAAU,kCACV,MAAO,4CACP,OAAQ,SAAA,EAEP,SAAAmB,EAAE,aAAa,EAClB,EACAnB,MAAC,OAAI,MAAO,CACV,UAAW,UACX,SAAU,kCACV,MAAO,8BAAA,EAEN,SAAAmD,EAAS,QAAQ,KAAK,IAAI,CAAA,CAC7B,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,EAvDQA,EAAS,EAwDnB,CACD,EACH,EAEAF,OAAC,OAAI,MAAO,CACV,QAAS,OACT,eAAgB,WAChB,IAAK,UACL,WAAY,MAAA,EAEZ,SAAA,CAAAjD,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMyB,EAAe,EAAK,EACnC,UAAU,4BAET,WAAE,QAAQ,CAAA,CAAA,EAEbzB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS2C,EACT,SAAUjB,EACV,UAAU,0BAET,SAAYP,EAAZO,EAAc,SAAc,iBAAN,CAAuB,CAAA,CAChD,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA,CAAA,CAGN,CCtUA,SAAwB0B,IAAe,CACrC,cACG1D,EAAA,CACC,SAAA,CAAAM,EAAAA,IAACqD,EAAA,EAAU,QACVC,EAAA,EAAO,QACPtC,GAAA,CAAA,CAAa,CAAA,EAChB,CAEJ","x_google_ignoreList":[3,4]}
@@ -0,0 +1,2 @@
1
+ import{j as s,u as L}from"./query-B6BuIB0M.js";import{r as u,O as A}from"./vendor-DJo4KD8w.js";import{_ as K,h as E,$ as _,u as p,U as H,a0 as O,a1 as T,N as P,O as B,Q as C,a2 as F,a3 as I,a4 as M,V as w,X as z,e as D,f as W,g as Q,T as q,a5 as G,a6 as J,a7 as U,a8 as V}from"./index-CqzrFNnV.js";import{b as X,u as Y,L as Z}from"./routing-C43HVxNw.js";import{u as f}from"./i18n-BbpF47i1.js";import{F as ee,T as se}from"./ToolbarPanels-mrjx6GSA.js";import{F as te}from"./XMarkIcon-KMKD47CF.js";import{F as oe,a as re}from"./ChevronLeftIcon-BLyRNZuL.js";import{r as v,L as g}from"./routing-swMLj8Z8.js";import{C as j}from"./CookiePreferences-BDtMuCT2.js";import{K as ne}from"./privacy-BCxizJzS.js";import{S as ae}from"./StreamStatusContext-BNiTXRfJ.js";const ie=({className:t})=>s.jsx("span",{className:t,style:{fontSize:"1.25rem",lineHeight:"1"},children:"🔭"});function le({href:t,to:e,...r}){return s.jsx(Z,{to:t??"",...r})}function ce({isCollapsed:t,toggleCollapsed:e,navigationMenu:r}){const{t:o}=f(),n=(d,m)=>o(`Sidebar.${d}`,m),a=X(),l=Y(),{openResources:i,removeResource:c,reorderResources:h}=K(),b=[{name:n("discover"),href:"/know/discover",icon:ie,description:n("searchAndBrowse")},{name:n("compose"),href:"/know/compose",icon:ee,description:n("composeNewResource")}],S=u.useCallback(()=>{e()},[e]),N=u.useCallback(({resourceId:d})=>{c(d),a===`/know/resource/${d}`&&l.push("/know/discover")},[c,a,l]),R=u.useCallback(({oldIndex:d,newIndex:m})=>{h(d,m)},[h]);E({"browse:sidebar-toggle":S,"browse:resource-close":N,"browse:resource-reorder":R});const k=d=>{l.push(d)},$=d=>`/know/resource/${d}`;return s.jsx("div",{className:"flex flex-col h-full",children:s.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:s.jsx(_,{fixedItems:b,resources:i,isCollapsed:t,currentPath:a,LinkComponent:le,onNavigate:k,getResourceHref:$,className:"knowledge-navigation",translations:{title:n("title")},icons:{chevronLeft:re,bars:oe,close:te},navigationMenu:r})})})}function de(){const{t}=f(),e=(i,c)=>t(`Navigation.${i}`,c),{t:r}=f(),o=(i,c)=>r(`Home.${i}`,c),{isAuthenticated:n,isAdmin:a,isModerator:l}=p();return s.jsx(H,{Link:g,routes:v,t:e,tHome:o,brandingLink:"/",collapsible:!0,storageKey:"knowledgeNavCollapsed",isAuthenticated:n,isAdmin:a,isModerator:l,children:(i,c,h)=>s.jsx(ce,{isCollapsed:i,toggleCollapsed:c,navigationMenu:h})})}const x="openDocuments";function y(t){return[...t].sort((e,r)=>e.order!==void 0&&r.order!==void 0?e.order-r.order:e.openedAt-r.openedAt)}function ue(){if(typeof localStorage>"u")return[];try{const t=localStorage.getItem(x);if(t)return y(JSON.parse(t))}catch{}return[]}class he{constructor(){this.state$=new O(ue()),this.resources$=this.state$.asObservable(),this.handleStorageEvent=e=>{if(e.key===x&&e.newValue)try{this.state$.next(y(JSON.parse(e.newValue)))}catch{}},this.state$.subscribe(e=>{typeof localStorage<"u"&&localStorage.setItem(x,JSON.stringify(e))}),typeof window<"u"&&window.addEventListener("storage",this.handleStorageEvent)}get resources(){return this.state$.value}add(e,r,o,n){const a=this.state$.value;if(a.find(i=>i.id===e))this.state$.next(a.map(i=>i.id===e?{...i,name:r,...o&&{mediaType:o},...n&&{storageUri:n}}:i));else{const i=a.length>0?Math.max(...a.map(c=>c.order??c.openedAt)):0;this.state$.next([...a,{id:e,name:r,openedAt:Date.now(),order:i+1,...o&&{mediaType:o},...n&&{storageUri:n}}])}}remove(e){this.state$.next(this.state$.value.filter(r=>r.id!==e))}updateName(e,r){this.state$.next(this.state$.value.map(o=>o.id===e?{...o,name:r}:o))}reorder(e,r){const o=[...this.state$.value],n=o.splice(e,1)[0];o.splice(r,0,n),this.state$.next(o.map((a,l)=>({...a,order:l})))}destroy(){typeof window<"u"&&window.removeEventListener("storage",this.handleStorageEvent)}}function fe(){const t=u.useMemo(()=>new he,[]);u.useEffect(()=>()=>t.destroy(),[t]);const e=T(t.resources$)??t.resources,r=u.useMemo(()=>({addResource:(o,n,a,l)=>t.add(o,n,a,l),removeResource:o=>t.remove(o),updateResourceName:(o,n)=>t.updateName(o,n),reorderResources:(o,n)=>t.reorder(o,n)}),[t]);return u.useMemo(()=>({openResources:e,...r}),[e,r])}function me(){const t=L();return u.useMemo(()=>({invalidateAnnotations:e=>{t.invalidateQueries({queryKey:["resources",e,"annotations"]})},invalidateEvents:e=>{t.invalidateQueries({queryKey:["resources",e,"events"]})}}),[t])}function xe(){return G(),J(),null}function pe(){const{t}=f(),e=a=>t(`DiscoverEmptyState.${a}`),{knowledgeBases:r,activeKnowledgeBase:o}=p(),n=o?V(o.id):null;return r.length===0?s.jsxs("div",{style:{textAlign:"center",maxWidth:"28rem"},children:[s.jsx("h2",{style:{fontSize:"1.1rem",fontWeight:600,marginBottom:"0.5rem"},children:e("noKnowledgeBases")}),s.jsx("p",{style:{color:"var(--semiont-color-neutral-400)",fontSize:"0.85rem",lineHeight:1.5,marginBottom:"0.75rem"},children:e("noKnowledgeBasesHint")}),s.jsxs("p",{style:{color:"var(--semiont-color-neutral-400)",fontSize:"0.85rem",lineHeight:1.5},children:[s.jsx("a",{href:"https://github.com/The-AI-Alliance/semiont",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--semiont-color-primary-500)"},children:e("findKnowledgeBases")})," · ",s.jsx("a",{href:"https://github.com/The-AI-Alliance/semiont-template-kb",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--semiont-color-primary-500)"},children:e("createNew")})]})]}):n==="authenticated"?null:s.jsxs("div",{style:{textAlign:"center",maxWidth:"24rem"},children:[s.jsx("h2",{style:{fontSize:"1.1rem",fontWeight:600,marginBottom:"0.5rem"},children:(o==null?void 0:o.label)??""}),s.jsxs("p",{style:{color:"var(--semiont-color-neutral-400)",fontSize:"0.85rem",lineHeight:1.5},children:[e(n==="expired"?"sessionExpired":"signedOut")," ",e("signInHint")]})]})}function ve({t,keyboardContext:e}){const{activePanel:r}=D(),{theme:o}=W(),{showLineNumbers:n}=Q();return s.jsxs("div",{className:"h-screen semiont-knowledge-layout semiont-layout-with-footer flex flex-col overflow-hidden",children:[s.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[s.jsx("main",{className:"flex-1 w-full px-2 pb-6 flex flex-col overflow-hidden",children:s.jsx("div",{className:"w-full mx-auto flex-1 flex flex-col h-full overflow-hidden items-center justify-center",children:s.jsx(pe,{})})}),s.jsx(se,{activePanel:r,showLineNumbers:n,theme:o,hoverDelayMs:150}),s.jsx(q,{activePanel:r,context:"simple"})]}),s.jsx(w,{Link:g,routes:v,t:(a,l)=>t(`Footer.${a}`,l),CookiePreferences:j,showPolicyLinks:!("__TAURI_INTERNALS__"in window),...(e==null?void 0:e.openKeyboardHelp)&&{onOpenKeyboardHelp:e.openKeyboardHelp}})]})}function ge({children:t}){const{status:e}=U();return s.jsx(ae.Provider,{value:e,children:t})}function we(){const{t}=f(),e=u.useContext(ne),r=fe(),o=me(),{token:n,isLoading:a,activeKnowledgeBase:l,refreshActive:i}=p();return a?s.jsx("div",{className:"h-screen flex items-center justify-center",children:s.jsxs("div",{className:"text-center",children:[s.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),s.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Loading..."})]})}):!l||!n?s.jsx(ve,{t:(c,h)=>t(c,h),keyboardContext:e}):s.jsx(B,{token:n,children:s.jsx(C,{baseUrl:z(l),tokenRefresher:i,children:s.jsx(F,{cacheManager:o,children:s.jsx(I,{openResourcesManager:r,children:s.jsxs(M,{children:[s.jsx(xe,{}),s.jsx(ge,{children:s.jsxs("div",{className:"h-screen semiont-knowledge-layout semiont-layout-with-footer flex flex-col overflow-hidden",children:[s.jsxs("div",{className:"flex flex-1 overflow-hidden",children:[s.jsx(de,{}),s.jsx("main",{className:"flex-1 w-full px-2 pb-6 flex flex-col overflow-hidden",children:s.jsx("div",{className:"w-full mx-auto flex-1 flex flex-col h-full overflow-hidden",children:s.jsx(A,{})})})]}),s.jsx(w,{Link:g,routes:v,t:(c,h)=>t(`Footer.${c}`,h),CookiePreferences:j,showPolicyLinks:!("__TAURI_INTERNALS__"in window),...(e==null?void 0:e.openKeyboardHelp)&&{onOpenKeyboardHelp:e.openKeyboardHelp}})]})})]})})})})})}function _e(){return s.jsx(P,{children:s.jsx(we,{})})}export{_e as default};
2
+ //# sourceMappingURL=layout-DXjUb5pL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-DXjUb5pL.js","sources":["../../src/components/knowledge/KnowledgeNavigation.tsx","../../src/components/knowledge/KnowledgeSidebarWrapper.tsx","../../src/stores/open-resources-store.ts","../../src/hooks/useOpenResourcesManager.ts","../../src/hooks/useCacheManager.ts","../../src/app/[locale]/know/layout.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from '@/i18n/routing';\nimport { usePathname, useRouter } from '@/i18n/routing';\nimport { PlusIcon, ChevronLeftIcon, Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline';\nimport {\n useOpenResources,\n useEventSubscriptions,\n CollapsibleResourceNavigation,\n type NavigationItem,\n type OpenResource\n} from '@semiont/react-ui';\n\n// Custom telescope icon component\nconst TelescopeIcon = ({ className }: { className?: string }) => (\n <span className={className} style={{ fontSize: '1.25rem', lineHeight: '1' }}>🔭</span>\n);\n\ninterface KnowledgeNavigationProps {\n isCollapsed: boolean;\n toggleCollapsed: () => void;\n navigationMenu?: (onClose: () => void) => React.ReactNode;\n}\n\n// Adapter: CollapsibleResourceNavigation passes href, but our Link uses `to`\nfunction HrefLink({ href, to: _to, ...props }: React.ComponentProps<typeof Link> & { href?: string }) {\n return <Link to={(href ?? '') as string} {...props} />;\n}\n\nexport function KnowledgeNavigation({ isCollapsed, toggleCollapsed, navigationMenu }: KnowledgeNavigationProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Sidebar.${k}`, p as any) as string;\n const pathname = usePathname();\n const router = useRouter();\n const { openResources, removeResource, reorderResources } = useOpenResources();\n\n const fixedNavigation: NavigationItem[] = [\n {\n name: t('discover'),\n href: '/know/discover',\n icon: TelescopeIcon,\n description: t('searchAndBrowse')\n },\n {\n name: t('compose'),\n href: '/know/compose',\n icon: PlusIcon,\n description: t('composeNewResource')\n }\n ];\n\n // Handle sidebar toggle events\n const handleSidebarToggle = useCallback(() => {\n toggleCollapsed();\n }, [toggleCollapsed]);\n\n // Handle resource close events\n const handleResourceClose = useCallback(({ resourceId }: { resourceId: string }) => {\n removeResource(resourceId);\n\n // If we're closing the currently viewed document, navigate to Discover\n if (pathname === `/know/resource/${resourceId}`) {\n router.push('/know/discover');\n }\n }, [removeResource, pathname, router]);\n\n // Handle resource reorder events\n const handleResourceReorder = useCallback(({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => {\n reorderResources(oldIndex, newIndex);\n }, [reorderResources]);\n\n // Subscribe to navigation events\n useEventSubscriptions({\n 'browse:sidebar-toggle': handleSidebarToggle,\n 'browse:resource-close': handleResourceClose,\n 'browse:resource-reorder': handleResourceReorder,\n });\n\n // Handle navigation\n const handleNavigate = (path: string) => {\n router.push(path);\n };\n\n // Build resource href\n const getResourceHref = (resourceId: string) => {\n return `/know/resource/${resourceId}`;\n };\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"flex-1 min-h-0 overflow-y-auto\">\n <CollapsibleResourceNavigation\n fixedItems={fixedNavigation}\n resources={openResources as OpenResource[]}\n isCollapsed={isCollapsed}\n currentPath={pathname}\n LinkComponent={HrefLink as any}\n onNavigate={handleNavigate}\n getResourceHref={getResourceHref}\n className=\"knowledge-navigation\"\n translations={{\n title: t('title')\n }}\n icons={{\n chevronLeft: ChevronLeftIcon,\n bars: Bars3Icon,\n close: XMarkIcon\n }}\n navigationMenu={navigationMenu}\n />\n </div>\n </div>\n );\n}","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { LeftSidebar, useKnowledgeBaseSession } from '@semiont/react-ui';\nimport { KnowledgeNavigation } from './KnowledgeNavigation';\nimport { Link, routes } from '@/lib/routing';\n\nexport function KnowledgeSidebarWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const { isAuthenticated, isAdmin, isModerator } = useKnowledgeBaseSession();\n\n return (\n <LeftSidebar\n Link={Link}\n routes={routes}\n t={t}\n tHome={tHome}\n brandingLink=\"/\"\n collapsible={true}\n storageKey=\"knowledgeNavCollapsed\"\n isAuthenticated={isAuthenticated}\n isAdmin={isAdmin}\n isModerator={isModerator}\n >\n {(isCollapsed, toggleCollapsed, navigationMenu) => (\n <KnowledgeNavigation\n isCollapsed={isCollapsed}\n toggleCollapsed={toggleCollapsed}\n navigationMenu={navigationMenu}\n />\n )}\n </LeftSidebar>\n );\n}\n","/**\n * OpenResourcesStore — per-workspace observable store for open resources\n *\n * BehaviorSubject-backed store for the list of open documents (tabs).\n * Replaces useState in useOpenResourcesManager with a reactive store that:\n * - Persists to localStorage\n * - Syncs across tabs via StorageEvent\n */\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport type { OpenResource } from '@semiont/react-ui';\n\nconst STORAGE_KEY = 'openDocuments';\n\nfunction sortResources(resources: OpenResource[]): OpenResource[] {\n return [...resources].sort((a, b) => {\n if (a.order !== undefined && b.order !== undefined) return a.order - b.order;\n return a.openedAt - b.openedAt;\n });\n}\n\nfunction loadFromStorage(): OpenResource[] {\n if (typeof localStorage === 'undefined') return [];\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored) return sortResources(JSON.parse(stored) as OpenResource[]);\n } catch {\n // Ignore parse errors\n }\n return [];\n}\n\nexport class OpenResourcesStore {\n private readonly state$ = new BehaviorSubject<OpenResource[]>(loadFromStorage());\n\n /** Observable of the current open resources list */\n readonly resources$: Observable<OpenResource[]> = this.state$.asObservable();\n\n constructor() {\n // Persist to localStorage on every change\n this.state$.subscribe(resources => {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(resources));\n }\n });\n\n // Sync from other tabs\n if (typeof window !== 'undefined') {\n window.addEventListener('storage', this.handleStorageEvent);\n }\n }\n\n private readonly handleStorageEvent = (e: StorageEvent): void => {\n if (e.key === STORAGE_KEY && e.newValue) {\n try {\n this.state$.next(sortResources(JSON.parse(e.newValue) as OpenResource[]));\n } catch {\n // Ignore parse errors\n }\n }\n };\n\n get resources(): OpenResource[] {\n return this.state$.value;\n }\n\n add(id: string, name: string, mediaType?: string, storageUri?: string): void {\n const current = this.state$.value;\n const existing = current.find(r => r.id === id);\n if (existing) {\n this.state$.next(current.map(r =>\n r.id === id\n ? { ...r, name, ...(mediaType && { mediaType }), ...(storageUri && { storageUri }) }\n : r\n ));\n } else {\n const maxOrder = current.length > 0\n ? Math.max(...current.map(r => r.order ?? r.openedAt))\n : 0;\n this.state$.next([\n ...current,\n { id, name, openedAt: Date.now(), order: maxOrder + 1, ...(mediaType && { mediaType }), ...(storageUri && { storageUri }) },\n ]);\n }\n }\n\n remove(id: string): void {\n this.state$.next(this.state$.value.filter(r => r.id !== id));\n }\n\n updateName(id: string, name: string): void {\n this.state$.next(this.state$.value.map(r => r.id === id ? { ...r, name } : r));\n }\n\n reorder(oldIndex: number, newIndex: number): void {\n const current = [...this.state$.value];\n const moved = current.splice(oldIndex, 1)[0]!;\n current.splice(newIndex, 0, moved);\n this.state$.next(current.map((r, index) => ({ ...r, order: index })));\n }\n\n /** Release event listener — call when the workspace is torn down */\n destroy(): void {\n if (typeof window !== 'undefined') {\n window.removeEventListener('storage', this.handleStorageEvent);\n }\n }\n}\n","import { useMemo, useEffect } from 'react';\nimport type { OpenResourcesManager } from '@semiont/react-ui';\nimport { useObservable } from '@semiont/react-ui';\nimport { OpenResourcesStore } from '@/stores/open-resources-store';\n\n/**\n * Hook that provides OpenResourcesManager delegating to OpenResourcesStore.\n * State lives in a BehaviorSubject; React re-renders via useObservable subscription.\n */\nexport function useOpenResourcesManager(): OpenResourcesManager {\n const store = useMemo(() => new OpenResourcesStore(), []);\n\n useEffect(() => () => store.destroy(), [store]);\n\n const openResources = useObservable(store.resources$) ?? store.resources;\n\n const callbacks = useMemo(\n () => ({\n addResource: (id: string, name: string, mediaType?: string, storageUri?: string) =>\n store.add(id, name, mediaType, storageUri),\n removeResource: (id: string) => store.remove(id),\n updateResourceName: (id: string, name: string) => store.updateName(id, name),\n reorderResources: (oldIndex: number, newIndex: number) => store.reorder(oldIndex, newIndex),\n }),\n [store],\n );\n\n return useMemo(\n () => ({ openResources, ...callbacks }),\n [openResources, callbacks],\n );\n}\n","import { useMemo } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport type { CacheManager } from '@semiont/react-ui';\nimport type { ResourceId } from '@semiont/core';\n\n/**\n * Frontend implementation of CacheManager using React Query\n *\n * Usage:\n * ```typescript\n * const cacheManager = useCacheManager();\n * <CacheProvider cacheManager={cacheManager}>\n * <YourComponents />\n * </CacheProvider>\n * ```\n */\nexport function useCacheManager(): CacheManager {\n const queryClient = useQueryClient();\n\n return useMemo(() => ({\n invalidateAnnotations: (rUri: ResourceId) => {\n queryClient.invalidateQueries({ queryKey: ['resources', rUri, 'annotations'] });\n },\n invalidateEvents: (rUri: ResourceId) => {\n queryClient.invalidateQueries({ queryKey: ['resources', rUri, 'events'] });\n }\n }), [queryClient]);\n}\n","import { useContext } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { KnowledgeSidebarWrapper } from '@/components/knowledge/KnowledgeSidebarWrapper';\nimport {\n Footer,\n ResourceAnnotationsProvider,\n OpenResourcesProvider,\n CacheProvider,\n ApiClientProvider,\n AuthTokenProvider,\n Toolbar,\n useGlobalEvents,\n useAttentionStream,\n useStoreTokenSync,\n usePanelBrowse,\n useTheme,\n useLineNumbers,\n useKnowledgeBaseSession,\n kbBackendUrl,\n getKbSessionStatus,\n} from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link, routes } from '@/lib/routing';\nimport { useOpenResourcesManager } from '@/hooks/useOpenResourcesManager';\nimport { useCacheManager } from '@/hooks/useCacheManager';\nimport { StreamStatusContext } from '@/contexts/StreamStatusContext';\nimport { AuthShell } from '@/contexts/AuthShell';\n\nfunction GlobalEventsConnector() {\n useStoreTokenSync();\n useGlobalEvents();\n return null;\n}\n\n/**\n * Empty state for the main content area when no KB is connected or authenticated.\n * Shows contextual guidance based on whether any KBs exist.\n */\nfunction DiscoverEmptyState() {\n const { t: _t } = useTranslation();\n const t = (k: string) => _t(`DiscoverEmptyState.${k}`) as string;\n const { knowledgeBases, activeKnowledgeBase } = useKnowledgeBaseSession();\n const status = activeKnowledgeBase\n ? getKbSessionStatus(activeKnowledgeBase.id)\n : null;\n\n if (knowledgeBases.length === 0) {\n return (\n <div style={{ textAlign: 'center', maxWidth: '28rem' }}>\n <h2 style={{ fontSize: '1.1rem', fontWeight: 600, marginBottom: '0.5rem' }}>{t('noKnowledgeBases')}</h2>\n <p style={{ color: 'var(--semiont-color-neutral-400)', fontSize: '0.85rem', lineHeight: 1.5, marginBottom: '0.75rem' }}>\n {t('noKnowledgeBasesHint')}\n </p>\n <p style={{ color: 'var(--semiont-color-neutral-400)', fontSize: '0.85rem', lineHeight: 1.5 }}>\n <a href=\"https://github.com/The-AI-Alliance/semiont\" target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: 'var(--semiont-color-primary-500)' }}>{t('findKnowledgeBases')}</a>\n {' · '}\n <a href=\"https://github.com/The-AI-Alliance/semiont-template-kb\" target=\"_blank\" rel=\"noopener noreferrer\" style={{ color: 'var(--semiont-color-primary-500)' }}>{t('createNew')}</a>\n </p>\n </div>\n );\n }\n\n if (status === 'authenticated') {\n return null;\n }\n\n return (\n <div style={{ textAlign: 'center', maxWidth: '24rem' }}>\n <h2 style={{ fontSize: '1.1rem', fontWeight: 600, marginBottom: '0.5rem' }}>\n {activeKnowledgeBase?.label ?? ''}\n </h2>\n <p style={{ color: 'var(--semiont-color-neutral-400)', fontSize: '0.85rem', lineHeight: 1.5 }}>\n {status === 'expired' ? t('sessionExpired') : t('signedOut')}\n {' '}{t('signInHint')}\n </p>\n </div>\n );\n}\n\nfunction UnauthenticatedKnowledgeLayout({ t, keyboardContext }: { t: (key: string, params?: Record<string, unknown>) => string; keyboardContext: { openKeyboardHelp?: () => void } | null }) {\n const { activePanel } = usePanelBrowse();\n const { theme } = useTheme();\n const { showLineNumbers } = useLineNumbers();\n\n return (\n <div className=\"h-screen semiont-knowledge-layout semiont-layout-with-footer flex flex-col overflow-hidden\">\n <div className=\"flex flex-1 overflow-hidden\">\n <main className=\"flex-1 w-full px-2 pb-6 flex flex-col overflow-hidden\">\n <div className=\"w-full mx-auto flex-1 flex flex-col h-full overflow-hidden items-center justify-center\">\n <DiscoverEmptyState />\n </div>\n </main>\n <ToolbarPanels\n activePanel={activePanel}\n showLineNumbers={showLineNumbers}\n theme={theme}\n hoverDelayMs={150}\n />\n <Toolbar activePanel={activePanel} context=\"simple\" />\n </div>\n <Footer\n Link={Link}\n routes={routes}\n t={(key: string, params?: Record<string, unknown>) => t(`Footer.${key}`, params as any) as string}\n CookiePreferences={CookiePreferences}\n showPolicyLinks={!('__TAURI_INTERNALS__' in window)}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n />\n </div>\n );\n}\n\nfunction KnowledgeLayoutInner({ children }: { children: React.ReactNode }) {\n const { status } = useAttentionStream();\n return (\n <StreamStatusContext.Provider value={status}>\n {children}\n </StreamStatusContext.Provider>\n );\n}\n\nfunction KnowledgeLayoutBody() {\n const { t } = useTranslation();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n const openResourcesManager = useOpenResourcesManager();\n const cacheManager = useCacheManager();\n const { token: authToken, isLoading, activeKnowledgeBase, refreshActive } = useKnowledgeBaseSession();\n\n if (isLoading) {\n return (\n <div className=\"h-screen flex items-center justify-center\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4\"></div>\n <p className=\"text-gray-600 dark:text-gray-400\">Loading...</p>\n </div>\n </div>\n );\n }\n\n if (!activeKnowledgeBase || !authToken) {\n return (\n <UnauthenticatedKnowledgeLayout t={(key: string, params?: Record<string, unknown>) => t(key, params as any) as string} keyboardContext={keyboardContext} />\n );\n }\n\n return (\n <AuthTokenProvider token={authToken}>\n <ApiClientProvider baseUrl={kbBackendUrl(activeKnowledgeBase)} tokenRefresher={refreshActive}>\n <CacheProvider cacheManager={cacheManager}>\n <OpenResourcesProvider openResourcesManager={openResourcesManager}>\n <ResourceAnnotationsProvider>\n <GlobalEventsConnector />\n <KnowledgeLayoutInner>\n <div className=\"h-screen semiont-knowledge-layout semiont-layout-with-footer flex flex-col overflow-hidden\">\n <div className=\"flex flex-1 overflow-hidden\">\n <KnowledgeSidebarWrapper />\n <main className=\"flex-1 w-full px-2 pb-6 flex flex-col overflow-hidden\">\n <div className=\"w-full mx-auto flex-1 flex flex-col h-full overflow-hidden\">\n <Outlet />\n </div>\n </main>\n </div>\n <Footer\n Link={Link}\n routes={routes}\n t={(key: string, params?: Record<string, unknown>) => t(`Footer.${key}`, params as any) as string}\n CookiePreferences={CookiePreferences}\n showPolicyLinks={!('__TAURI_INTERNALS__' in window)}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n />\n </div>\n </KnowledgeLayoutInner>\n </ResourceAnnotationsProvider>\n </OpenResourcesProvider>\n </CacheProvider>\n </ApiClientProvider>\n </AuthTokenProvider>\n );\n}\n\nexport default function KnowledgeLayout() {\n return (\n <AuthShell>\n <KnowledgeLayoutBody />\n </AuthShell>\n );\n}\n"],"names":["TelescopeIcon","className","jsx","HrefLink","href","_to","props","Link","KnowledgeNavigation","isCollapsed","toggleCollapsed","navigationMenu","_t","useTranslation","t","k","p","pathname","usePathname","router","useRouter","openResources","removeResource","reorderResources","useOpenResources","fixedNavigation","PlusIcon","handleSidebarToggle","useCallback","handleResourceClose","resourceId","handleResourceReorder","oldIndex","newIndex","useEventSubscriptions","handleNavigate","path","getResourceHref","CollapsibleResourceNavigation","ChevronLeftIcon","Bars3Icon","XMarkIcon","KnowledgeSidebarWrapper","_tHome","tHome","isAuthenticated","isAdmin","isModerator","useKnowledgeBaseSession","LeftSidebar","routes","STORAGE_KEY","sortResources","resources","a","b","loadFromStorage","stored","OpenResourcesStore","BehaviorSubject","id","name","mediaType","storageUri","current","r","maxOrder","moved","index","useOpenResourcesManager","store","useMemo","useEffect","useObservable","callbacks","useCacheManager","queryClient","useQueryClient","rUri","GlobalEventsConnector","useStoreTokenSync","useGlobalEvents","DiscoverEmptyState","knowledgeBases","activeKnowledgeBase","status","getKbSessionStatus","jsxs","UnauthenticatedKnowledgeLayout","keyboardContext","activePanel","usePanelBrowse","theme","useTheme","showLineNumbers","useLineNumbers","ToolbarPanels","Toolbar","Footer","key","params","CookiePreferences","KnowledgeLayoutInner","children","useAttentionStream","StreamStatusContext","KnowledgeLayoutBody","useContext","KeyboardShortcutsContext","openResourcesManager","cacheManager","authToken","isLoading","refreshActive","AuthTokenProvider","ApiClientProvider","kbBackendUrl","CacheProvider","OpenResourcesProvider","ResourceAnnotationsProvider","Outlet","KnowledgeLayout","AuthShell"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var a={annotations:"Anotasi",history:"Sejarah",resourceInfo:"Maklumat Sumber",collaboration:"Kolaborasi",userAccount:"Akaun Pengguna",settings:"Tetapan",knowledgeBase:"Pangkalan Pengetahuan"},e={title:"Maklumat Sumber",locale:"Lokasi",notSpecified:"Tidak dinyatakan",entityTypeTags:"Tag Jenis Entiti",representation:"Perwakilan",mediaType:"Jenis Media",byteSize:"Saiz",clone:"Klon",cloneDescription:"Jana pautan klon yang boleh dikongsi untuk sumber ini",archive:"Arkib",archiveDescription:"Alihkan sumber ini ke status diarkibkan",unarchive:"Nyaharkib",unarchiveDescription:"Pulihkan sumber ini ke status aktif",provenance:"Asal-usul",createdAt:"Dicipta",modifiedAt:"Diubah suai",creationMethod:"Cara penciptaan",attributedTo:"Dikaitkan dengan",derivedFrom:"Diperoleh daripada",generatedBy:"Dijana oleh",storageUri:"Storan"},n={title:"Kolaborasi",connectionStatus:"Status Sambungan",live:"Langsung",disconnected:"Terputus",events:"{{count}} peristiwa",lastSync:"Penyegerakan terakhir:",noActivity:"Tiada aktiviti lagi",justNow:"Baru sahaja",secondsAgo:"{{count}} saat yang lalu",minuteAgo:"1 minit yang lalu",minutesAgo:"{{count}} minit yang lalu",hourAgo:"1 jam yang lalu",hoursAgo:"{{count}} jam yang lalu",realtimeActive:"Kemas kini masa nyata sedang aktif",reconnecting:"Menyambung semula ke pelayan...",sharing:"Perkongsian",collaborationComingSoon:"Ciri kolaborasi akan datang tidak lama lagi"},i={history:"Sejarah",loading:"Memuatkan...",user:"Pengguna",method:"Kaedah",viewOriginal:"Lihat asal",viewAnnotation:"Lihat anotasi: {{content}}",resourceCreated:"Sumber Dicipta",resourceCloned:"Diklon",resourceArchived:"Diarkibkan",resourceUnarchived:"Dinyaharkibkan",highlightAdded:"Sorotan Ditambah",highlightRemoved:"Sorotan Dibuang",referenceCreated:"Rujukan Dicipta",referenceResolved:"Rujukan Diselesaikan",referenceDeleted:"Rujukan Dipadam",entitytagAdded:"Tag Ditambah",entitytagRemoved:"Tag Dibuang",assessmentAdded:"Penilaian Ditambah",assessmentRemoved:"Penilaian Dibuang",annotationAdded:"Anotasi Ditambah",annotationRemoved:"Anotasi Dibuang",annotationBodyUpdated:"Anotasi Dikemas Kini",jobEvent:"Peristiwa Tugas",justNow:"baru sahaja",minutesAgo:"{{count}}m lalu",hoursAgo:"{{count}}j lalu",daysAgo:"{{count}}h lalu"},t={title:"Ulasan",noComments:"Tiada ulasan lagi. Pilih teks dan klik Ulasan untuk menambah satu.",commentPlaceholder:"Taip ulasan anda di sini...",save:"Simpan",cancel:"Batal",edit:"Sunting",annotateComments:"Anotasi Ulasan",instructions:"Arahan",optional:"(pilihan)",instructionsPlaceholder:"cth., Fokus pada istilah teknikal...",annotate:"Anotasi",annotating:"Menganotasi...",toneLabel:"Nada",toneOptional:"(pilihan)",toneScholarly:"Ilmiah",toneExplanatory:"Penjelasan",toneConversational:"Perbualan",toneTechnical:"Teknikal",densityLabel:"Ketumpatan",densitySparse:"Jarang",densityDense:"Padat",fragmentSelected:"Fragmen dipilih",imageRegionSelected:"Kawasan imej dipilih",closeProgress:"Tutup"},s={title:"Sorotan",noHighlights:"Tiada sorotan lagi. Gunakan anotasi AI untuk mencari petikan penting.",annotateHighlights:"Anotasi Sorotan",instructions:"Arahan",optional:"(pilihan)",instructionsPlaceholder:"cth., Fokus pada konsep teknikal utama...",annotate:"Anotasi",annotating:"Menganotasi...",cancel:"Batal",densityLabel:"Ketumpatan",densitySparse:"Jarang",densityDense:"Padat",closeProgress:"Tutup"},o={title:"Penilaian",noAssessments:"Tiada penilaian lagi. Gunakan anotasi AI untuk menilai petikan.",assessmentPlaceholder:"Taip penilaian anda di sini...",save:"Simpan",cancel:"Batal",annotateAssessments:"Anotasi Penilaian",instructions:"Arahan",optional:"(pilihan)",instructionsPlaceholder:"cth., Nilai dakwaan untuk ketepatan dan bukti...",annotate:"Anotasi",annotating:"Menganotasi...",toneLabel:"Nada",toneOptional:"(pilihan)",toneAnalytical:"Analitikal",toneCritical:"Kritikal",toneBalanced:"Seimbang",toneConstructive:"Konstruktif",densityLabel:"Ketumpatan",densitySparse:"Jarang",densityDense:"Padat",fragmentSelected:"Fragmen dipilih",imageRegionSelected:"Kawasan imej dipilih",closeProgress:"Tutup"},l={title:"Tag",noTags:"Tiada tag lagi. Gunakan anotasi AI untuk mengenal pasti peranan struktur.",annotateTags:"Anotasi Tag",selectSchema:"Pilih Rangka Kerja",schemaLegal:"Analisis Undang-undang (IRAC)",schemaScientific:"Kertas Saintifik (IMRAD)",schemaArgument:"Struktur Argumen (Toulmin)",selectCategories:"Pilih Kategori",categoryIssue:"Isu",categoryRule:"Peraturan",categoryApplication:"Aplikasi",categoryConclusion:"Kesimpulan",categoryIntroduction:"Pengenalan",categoryMethods:"Kaedah",categoryResults:"Keputusan",categoryDiscussion:"Perbincangan",categoryClaim:"Dakwaan",categoryEvidence:"Bukti",categoryWarrant:"Waran",categoryCounterargument:"Hujah Balas",categoryRebuttal:"Sangkalan",annotate:"Anotasi",annotating:"Menganotasi...",cancel:"Batal",selectAll:"Pilih Semua",deselectAll:"Nyahpilih Semua",categoriesSelected:"{count, plural, =0 {Tiada kategori dipilih} =1 {1 kategori dipilih} other {# kategori dipilih}}",createTagForSelection:"Cipta Tag untuk Pilihan",selectCategory:"Pilih Kategori",chooseCategory:"Pilih kategori...",fragmentSelected:"Fragmen dipilih",imageRegionSelected:"Kawasan imej dipilih"},r={title:"Anotasi",statistics:"Statistik",highlight:"Sorotan",reference:"Rujukan",assessment:"Penilaian",comment:"Ulasan",tag:"Tag"},u={title:"Statistik",highlights:"Sorotan",comments:"Ulasan",assessments:"Penilaian",tags:"Tag",references:"Rujukan",stub:"Stub",resolved:"Diselesaikan",entityTypes:"Jenis Entiti"},g={title:"Rujukan",noReferences:"Tiada rujukan lagi. Pilih teks untuk mencipta rujukan ke sumber lain.",outgoingReferences:"Rujukan Keluar",incomingReferences:"Rujukan Masuk",noIncomingReferences:"Tiada rujukan masuk",stub:"Rujukan stub (tidak dipautkan)",resolved:"Rujukan diselesaikan (dipautkan)",open:"Buka",unlink:"Nyahpaut",resolve:"Selesaikan rujukan",cancel:"Batal",createReference:"Cipta Rujukan",entityTypesOptional:"Jenis Entiti (Pilihan)",fragmentSelected:"Fragmen dipilih",imageRegionSelected:"Kawasan imej dipilih",annotateReferences:"Anotasi Rujukan",selectEntityTypes:"Jenis entiti:",select:"Pilih",deselect:"Nyahpilih",noEntityTypes:"Tiada jenis entiti tersedia",typesSelected:"{count, plural, =1 {1 jenis dipilih} other {# jenis dipilih}}",annotate:"Anotasi",annotating:"Menganotasi...",includeDescriptiveReferences:"Sertakan rujukan deskriptif",descriptiveReferencesTooltip:"Cari juga frasa seperti 'CEO tersebut', 'gergasi teknologi tersebut', 'ahli fizik tersebut' (selain nama)",annotationProgressTitle:"Menganotasi Rujukan Entiti",cancelAnnotation:"Batalkan anotasi",found:"{{count}} ditemui",complete:"Anotasi selesai!",failed:"Anotasi gagal",current:"Semasa: {{entityType}}",closeProgress:"Tutup",loading:"memuatkan...",loadingEllipsis:"Memuatkan...",untitledResource:"Sumber Tanpa Tajuk",noText:"Tiada teks"},k={title:"Pintasan Papan Kekunci",closeDialog:"Tutup dialog",or:"atau",navigationTitle:"Navigasi",navOpenSearch:"Buka carian global",navOpenSearchAlt:"Buka carian global (alternatif)",navCreateResource:"Cipta sumber baharu",navCloseOverlays:"Tutup semua tindanan (tekan dua kali)",navShowHelp:"Tunjukkan bantuan pintasan papan kekunci",sidebarTitle:"Bar Sisi Pengetahuan",sidebarCollapse:"Kecilkan bar sisi",sidebarExpand:"Kembangkan bar sisi",sidebarPickup:"Angkat tab sumber (apabila difokuskan)",sidebarMove:"Alihkan tab sumber (apabila menyeret)",sidebarDrop:"Lepaskan tab sumber (apabila menyeret)",sidebarCancel:"Batalkan operasi seret",annotationsTitle:"Anotasi Sumber",annotHighlight:"Cipta sorotan daripada anotasi (terus)",annotReference:"Buka tetingkap timbul rujukan untuk anotasi",annotDelete:"Padam anotasi yang difokuskan",annotNavigate:"Navigasi melalui anotasi",annotNavigateBack:"Navigasi anotasi ke belakang",listsTitle:"Senarai & Grid",listsFilterNav:"Navigasi penapis jenis entiti",listsGridNav:"Navigasi grid sumber",listsJumpFirst:"Lompat ke item pertama",listsJumpLast:"Lompat ke item terakhir",searchModalTitle:"Dalam Modal Carian",searchNav:"Navigasi hasil carian",searchSelect:"Pilih hasil",searchClose:"Tutup carian",modalTitle:"Kawalan Modal",modalClose:"Tutup modal aktif",modalNavForward:"Navigasi ke hadapan melalui butang",modalNavBackward:"Navigasi ke belakang melalui butang",modalActivate:"Aktifkan butang yang difokuskan",accessibilityTitle:"Kebolehcapaian",a11ySkipLinks:"Navigasi ke pautan langkau (apabila di permulaan halaman)",a11yFollowLink:"Ikuti pautan langkau",macNote:"Menggunakan pintasan papan kekunci Mac. ⌘ ialah kekunci Command.",windowsNote:"Menggunakan pintasan papan kekunci Windows/Linux. Ctrl ialah kekunci Control.",footerHint:"Tekan {{key}} pada bila-bila masa untuk menunjukkan bantuan ini",close:"Tutup"},c={modeGroup:"Mod",browse:"Layari",annotate:"Anotasi",selectionGroup:"Motivasi",clickGroup:"Klik",shapeGroup:"Bentuk",none:"Tiada",linking:"Rujukan",highlighting:"Sorotan",assessing:"Nilai",commenting:"Ulasan",tagging:"Tag",detail:"Perincian",follow:"Ikuti",deleting:"Padam",jsonld:"JSON-LD",rectangle:"Segi Empat Tepat",circle:"Bulatan",polygon:"Poligon"},d={title:"Navigasi",collapseSidebar:"Kecilkan bar sisi",expandSidebar:"Kembangkan bar sisi",dragToReorder:"Seret untuk menyusun semula",dragToReorderDoc:"Seret untuk menyusun semula {{name}}",closeResource:"Tutup sumber",dragInstructions:"Untuk menyusun semula sumber: Gunakan Tab untuk navigasi ke sumber. Tekan Alt+Anak panah atas untuk bergerak ke atas atau Alt+Anak panah bawah untuk bergerak ke bawah. Untuk seret dan lepas: Tekan bar ruang untuk mengangkat item. Gunakan kekunci anak panah untuk mengalihkannya. Tekan bar ruang sekali lagi untuk melepaskan."},m={deleteConfirmationTitle:"Padam Anotasi",deleteConfirmationMessage:"Adakah anda pasti mahu memadam anotasi ini? Tindakan ini tidak boleh dibatalkan.",deleteConfirmationCancel:"Batal",deleteConfirmationDelete:"Padam"},h={title:"Tetapan",lineNumbers:"Nombor Baris",lineNumbersVisible:"Kelihatan",lineNumbersHidden:"Tersembunyi",theme:"Tema",themeLight:"Cerah",themeDark:"Gelap",themeSystem:"Sistem",themeSystemActive:"Sistem ({{mode}})",themeModeActive:"Menggunakan mod {{mode}}",language:"Bahasa",languageHint:"Tukar bahasa dalam navigasi utama",languageChanging:"Menukar bahasa...",hoverDelay:"Kelewatan Terapung",hoverDelayFast:"Pantas",hoverDelaySlow:"Perlahan",hoverDelayDescription:"Kelewatan {{delay}}ms sebelum kesan terapung muncul"},p={},b={gatherTitle:"Konteks Dikumpul",configureGenerationTitle:"Konfigurasi Penjanaan",configureSearchTitle:"Konfigurasi carian",searchResultsTitle:"Hasil carian",sourceContextLabel:"Konteks anotasi dalam sumber",connectionsLabel:"Anotasi rakan sebaya",citedByLabel:"Sumber dipetik oleh",userHintLabel:"Petunjuk",userHintPlaceholder:"Terangkan apa yang dirujuk oleh anotasi ini...",loadingContext:"Mengumpul konteks...",failedContext:"Gagal mengumpul konteks",cancel:"Batal",generate:"Jana",compose:"Karang",resolutionStrategyLabel:"Strategi resolusi",back:"Kembali",link:"Pautan",score:"Skor",noResults:"Tiada hasil ditemui",resourceTitle:"Tajuk Sumber",resourceTitlePlaceholder:"Masukkan tajuk sumber...",additionalInstructions:"Arahan Tambahan",additionalInstructionsPlaceholder:"Masukkan arahan tambahan...",language:"Bahasa",languageHelp:"Bahasa untuk kandungan yang dijana",creativity:"Kreativiti",creativityFocused:"Tertumpu",creativityCreative:"Kreatif",maxLength:"Panjang Maksimum",maxLengthHelp:"Bilangan maksimum token",maxResults:"Hasil Maksimum",semanticScoring:"Pemarkahan Semantik",semanticScoringHelp:"Gunakan AI untuk menilai hasil mengikut kerelevanan semantik",searching:"Mencari...",search:"Cari"},y={embeddingComputed:"Embedding dikira"},v={Toolbar:a,ResourceInfoPanel:e,CollaborationPanel:n,AnnotationHistory:i,CommentsPanel:t,HighlightPanel:s,AssessmentPanel:o,TaggingPanel:l,UnifiedAnnotationsPanel:r,StatisticsPanel:u,ReferencesPanel:g,KeyboardShortcuts:k,AnnotateToolbar:c,CollapsibleResourceNavigation:d,ResourceViewer:m,Settings:h,AnnotateView:p,ReferenceWizard:b,History:y};export{c as AnnotateToolbar,p as AnnotateView,i as AnnotationHistory,o as AssessmentPanel,n as CollaborationPanel,d as CollapsibleResourceNavigation,t as CommentsPanel,s as HighlightPanel,y as History,k as KeyboardShortcuts,b as ReferenceWizard,g as ReferencesPanel,e as ResourceInfoPanel,m as ResourceViewer,h as Settings,u as StatisticsPanel,l as TaggingPanel,a as Toolbar,r as UnifiedAnnotationsPanel,v as default};
2
+ //# sourceMappingURL=ms-5DGSFKM2-BlyezW6W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ms-5DGSFKM2-BlyezW6W.js","sources":["../../../../packages/react-ui/dist/ms-5DGSFKM2.mjs"],"sourcesContent":["'use client';\nimport \"./chunk-D4GAAQMM.mjs\";\n\n// translations/ms.json\nvar Toolbar = {\n annotations: \"Anotasi\",\n history: \"Sejarah\",\n resourceInfo: \"Maklumat Sumber\",\n collaboration: \"Kolaborasi\",\n userAccount: \"Akaun Pengguna\",\n settings: \"Tetapan\",\n knowledgeBase: \"Pangkalan Pengetahuan\"\n};\nvar ResourceInfoPanel = {\n title: \"Maklumat Sumber\",\n locale: \"Lokasi\",\n notSpecified: \"Tidak dinyatakan\",\n entityTypeTags: \"Tag Jenis Entiti\",\n representation: \"Perwakilan\",\n mediaType: \"Jenis Media\",\n byteSize: \"Saiz\",\n clone: \"Klon\",\n cloneDescription: \"Jana pautan klon yang boleh dikongsi untuk sumber ini\",\n archive: \"Arkib\",\n archiveDescription: \"Alihkan sumber ini ke status diarkibkan\",\n unarchive: \"Nyaharkib\",\n unarchiveDescription: \"Pulihkan sumber ini ke status aktif\",\n provenance: \"Asal-usul\",\n createdAt: \"Dicipta\",\n modifiedAt: \"Diubah suai\",\n creationMethod: \"Cara penciptaan\",\n attributedTo: \"Dikaitkan dengan\",\n derivedFrom: \"Diperoleh daripada\",\n generatedBy: \"Dijana oleh\",\n storageUri: \"Storan\"\n};\nvar CollaborationPanel = {\n title: \"Kolaborasi\",\n connectionStatus: \"Status Sambungan\",\n live: \"Langsung\",\n disconnected: \"Terputus\",\n events: \"{{count}} peristiwa\",\n lastSync: \"Penyegerakan terakhir:\",\n noActivity: \"Tiada aktiviti lagi\",\n justNow: \"Baru sahaja\",\n secondsAgo: \"{{count}} saat yang lalu\",\n minuteAgo: \"1 minit yang lalu\",\n minutesAgo: \"{{count}} minit yang lalu\",\n hourAgo: \"1 jam yang lalu\",\n hoursAgo: \"{{count}} jam yang lalu\",\n realtimeActive: \"Kemas kini masa nyata sedang aktif\",\n reconnecting: \"Menyambung semula ke pelayan...\",\n sharing: \"Perkongsian\",\n collaborationComingSoon: \"Ciri kolaborasi akan datang tidak lama lagi\"\n};\nvar AnnotationHistory = {\n history: \"Sejarah\",\n loading: \"Memuatkan...\",\n user: \"Pengguna\",\n method: \"Kaedah\",\n viewOriginal: \"Lihat asal\",\n viewAnnotation: \"Lihat anotasi: {{content}}\",\n resourceCreated: \"Sumber Dicipta\",\n resourceCloned: \"Diklon\",\n resourceArchived: \"Diarkibkan\",\n resourceUnarchived: \"Dinyaharkibkan\",\n highlightAdded: \"Sorotan Ditambah\",\n highlightRemoved: \"Sorotan Dibuang\",\n referenceCreated: \"Rujukan Dicipta\",\n referenceResolved: \"Rujukan Diselesaikan\",\n referenceDeleted: \"Rujukan Dipadam\",\n entitytagAdded: \"Tag Ditambah\",\n entitytagRemoved: \"Tag Dibuang\",\n assessmentAdded: \"Penilaian Ditambah\",\n assessmentRemoved: \"Penilaian Dibuang\",\n annotationAdded: \"Anotasi Ditambah\",\n annotationRemoved: \"Anotasi Dibuang\",\n annotationBodyUpdated: \"Anotasi Dikemas Kini\",\n jobEvent: \"Peristiwa Tugas\",\n justNow: \"baru sahaja\",\n minutesAgo: \"{{count}}m lalu\",\n hoursAgo: \"{{count}}j lalu\",\n daysAgo: \"{{count}}h lalu\"\n};\nvar CommentsPanel = {\n title: \"Ulasan\",\n noComments: \"Tiada ulasan lagi. Pilih teks dan klik Ulasan untuk menambah satu.\",\n commentPlaceholder: \"Taip ulasan anda di sini...\",\n save: \"Simpan\",\n cancel: \"Batal\",\n edit: \"Sunting\",\n annotateComments: \"Anotasi Ulasan\",\n instructions: \"Arahan\",\n optional: \"(pilihan)\",\n instructionsPlaceholder: \"cth., Fokus pada istilah teknikal...\",\n annotate: \"Anotasi\",\n annotating: \"Menganotasi...\",\n toneLabel: \"Nada\",\n toneOptional: \"(pilihan)\",\n toneScholarly: \"Ilmiah\",\n toneExplanatory: \"Penjelasan\",\n toneConversational: \"Perbualan\",\n toneTechnical: \"Teknikal\",\n densityLabel: \"Ketumpatan\",\n densitySparse: \"Jarang\",\n densityDense: \"Padat\",\n fragmentSelected: \"Fragmen dipilih\",\n imageRegionSelected: \"Kawasan imej dipilih\",\n closeProgress: \"Tutup\"\n};\nvar HighlightPanel = {\n title: \"Sorotan\",\n noHighlights: \"Tiada sorotan lagi. Gunakan anotasi AI untuk mencari petikan penting.\",\n annotateHighlights: \"Anotasi Sorotan\",\n instructions: \"Arahan\",\n optional: \"(pilihan)\",\n instructionsPlaceholder: \"cth., Fokus pada konsep teknikal utama...\",\n annotate: \"Anotasi\",\n annotating: \"Menganotasi...\",\n cancel: \"Batal\",\n densityLabel: \"Ketumpatan\",\n densitySparse: \"Jarang\",\n densityDense: \"Padat\",\n closeProgress: \"Tutup\"\n};\nvar AssessmentPanel = {\n title: \"Penilaian\",\n noAssessments: \"Tiada penilaian lagi. Gunakan anotasi AI untuk menilai petikan.\",\n assessmentPlaceholder: \"Taip penilaian anda di sini...\",\n save: \"Simpan\",\n cancel: \"Batal\",\n annotateAssessments: \"Anotasi Penilaian\",\n instructions: \"Arahan\",\n optional: \"(pilihan)\",\n instructionsPlaceholder: \"cth., Nilai dakwaan untuk ketepatan dan bukti...\",\n annotate: \"Anotasi\",\n annotating: \"Menganotasi...\",\n toneLabel: \"Nada\",\n toneOptional: \"(pilihan)\",\n toneAnalytical: \"Analitikal\",\n toneCritical: \"Kritikal\",\n toneBalanced: \"Seimbang\",\n toneConstructive: \"Konstruktif\",\n densityLabel: \"Ketumpatan\",\n densitySparse: \"Jarang\",\n densityDense: \"Padat\",\n fragmentSelected: \"Fragmen dipilih\",\n imageRegionSelected: \"Kawasan imej dipilih\",\n closeProgress: \"Tutup\"\n};\nvar TaggingPanel = {\n title: \"Tag\",\n noTags: \"Tiada tag lagi. Gunakan anotasi AI untuk mengenal pasti peranan struktur.\",\n annotateTags: \"Anotasi Tag\",\n selectSchema: \"Pilih Rangka Kerja\",\n schemaLegal: \"Analisis Undang-undang (IRAC)\",\n schemaScientific: \"Kertas Saintifik (IMRAD)\",\n schemaArgument: \"Struktur Argumen (Toulmin)\",\n selectCategories: \"Pilih Kategori\",\n categoryIssue: \"Isu\",\n categoryRule: \"Peraturan\",\n categoryApplication: \"Aplikasi\",\n categoryConclusion: \"Kesimpulan\",\n categoryIntroduction: \"Pengenalan\",\n categoryMethods: \"Kaedah\",\n categoryResults: \"Keputusan\",\n categoryDiscussion: \"Perbincangan\",\n categoryClaim: \"Dakwaan\",\n categoryEvidence: \"Bukti\",\n categoryWarrant: \"Waran\",\n categoryCounterargument: \"Hujah Balas\",\n categoryRebuttal: \"Sangkalan\",\n annotate: \"Anotasi\",\n annotating: \"Menganotasi...\",\n cancel: \"Batal\",\n selectAll: \"Pilih Semua\",\n deselectAll: \"Nyahpilih Semua\",\n categoriesSelected: \"{count, plural, =0 {Tiada kategori dipilih} =1 {1 kategori dipilih} other {# kategori dipilih}}\",\n createTagForSelection: \"Cipta Tag untuk Pilihan\",\n selectCategory: \"Pilih Kategori\",\n chooseCategory: \"Pilih kategori...\",\n fragmentSelected: \"Fragmen dipilih\",\n imageRegionSelected: \"Kawasan imej dipilih\"\n};\nvar UnifiedAnnotationsPanel = {\n title: \"Anotasi\",\n statistics: \"Statistik\",\n highlight: \"Sorotan\",\n reference: \"Rujukan\",\n assessment: \"Penilaian\",\n comment: \"Ulasan\",\n tag: \"Tag\"\n};\nvar StatisticsPanel = {\n title: \"Statistik\",\n highlights: \"Sorotan\",\n comments: \"Ulasan\",\n assessments: \"Penilaian\",\n tags: \"Tag\",\n references: \"Rujukan\",\n stub: \"Stub\",\n resolved: \"Diselesaikan\",\n entityTypes: \"Jenis Entiti\"\n};\nvar ReferencesPanel = {\n title: \"Rujukan\",\n noReferences: \"Tiada rujukan lagi. Pilih teks untuk mencipta rujukan ke sumber lain.\",\n outgoingReferences: \"Rujukan Keluar\",\n incomingReferences: \"Rujukan Masuk\",\n noIncomingReferences: \"Tiada rujukan masuk\",\n stub: \"Rujukan stub (tidak dipautkan)\",\n resolved: \"Rujukan diselesaikan (dipautkan)\",\n open: \"Buka\",\n unlink: \"Nyahpaut\",\n resolve: \"Selesaikan rujukan\",\n cancel: \"Batal\",\n createReference: \"Cipta Rujukan\",\n entityTypesOptional: \"Jenis Entiti (Pilihan)\",\n fragmentSelected: \"Fragmen dipilih\",\n imageRegionSelected: \"Kawasan imej dipilih\",\n annotateReferences: \"Anotasi Rujukan\",\n selectEntityTypes: \"Jenis entiti:\",\n select: \"Pilih\",\n deselect: \"Nyahpilih\",\n noEntityTypes: \"Tiada jenis entiti tersedia\",\n typesSelected: \"{count, plural, =1 {1 jenis dipilih} other {# jenis dipilih}}\",\n annotate: \"Anotasi\",\n annotating: \"Menganotasi...\",\n includeDescriptiveReferences: \"Sertakan rujukan deskriptif\",\n descriptiveReferencesTooltip: \"Cari juga frasa seperti 'CEO tersebut', 'gergasi teknologi tersebut', 'ahli fizik tersebut' (selain nama)\",\n annotationProgressTitle: \"Menganotasi Rujukan Entiti\",\n cancelAnnotation: \"Batalkan anotasi\",\n found: \"{{count}} ditemui\",\n complete: \"Anotasi selesai!\",\n failed: \"Anotasi gagal\",\n current: \"Semasa: {{entityType}}\",\n closeProgress: \"Tutup\",\n loading: \"memuatkan...\",\n loadingEllipsis: \"Memuatkan...\",\n untitledResource: \"Sumber Tanpa Tajuk\",\n noText: \"Tiada teks\"\n};\nvar KeyboardShortcuts = {\n title: \"Pintasan Papan Kekunci\",\n closeDialog: \"Tutup dialog\",\n or: \"atau\",\n navigationTitle: \"Navigasi\",\n navOpenSearch: \"Buka carian global\",\n navOpenSearchAlt: \"Buka carian global (alternatif)\",\n navCreateResource: \"Cipta sumber baharu\",\n navCloseOverlays: \"Tutup semua tindanan (tekan dua kali)\",\n navShowHelp: \"Tunjukkan bantuan pintasan papan kekunci\",\n sidebarTitle: \"Bar Sisi Pengetahuan\",\n sidebarCollapse: \"Kecilkan bar sisi\",\n sidebarExpand: \"Kembangkan bar sisi\",\n sidebarPickup: \"Angkat tab sumber (apabila difokuskan)\",\n sidebarMove: \"Alihkan tab sumber (apabila menyeret)\",\n sidebarDrop: \"Lepaskan tab sumber (apabila menyeret)\",\n sidebarCancel: \"Batalkan operasi seret\",\n annotationsTitle: \"Anotasi Sumber\",\n annotHighlight: \"Cipta sorotan daripada anotasi (terus)\",\n annotReference: \"Buka tetingkap timbul rujukan untuk anotasi\",\n annotDelete: \"Padam anotasi yang difokuskan\",\n annotNavigate: \"Navigasi melalui anotasi\",\n annotNavigateBack: \"Navigasi anotasi ke belakang\",\n listsTitle: \"Senarai & Grid\",\n listsFilterNav: \"Navigasi penapis jenis entiti\",\n listsGridNav: \"Navigasi grid sumber\",\n listsJumpFirst: \"Lompat ke item pertama\",\n listsJumpLast: \"Lompat ke item terakhir\",\n searchModalTitle: \"Dalam Modal Carian\",\n searchNav: \"Navigasi hasil carian\",\n searchSelect: \"Pilih hasil\",\n searchClose: \"Tutup carian\",\n modalTitle: \"Kawalan Modal\",\n modalClose: \"Tutup modal aktif\",\n modalNavForward: \"Navigasi ke hadapan melalui butang\",\n modalNavBackward: \"Navigasi ke belakang melalui butang\",\n modalActivate: \"Aktifkan butang yang difokuskan\",\n accessibilityTitle: \"Kebolehcapaian\",\n a11ySkipLinks: \"Navigasi ke pautan langkau (apabila di permulaan halaman)\",\n a11yFollowLink: \"Ikuti pautan langkau\",\n macNote: \"Menggunakan pintasan papan kekunci Mac. \\u2318 ialah kekunci Command.\",\n windowsNote: \"Menggunakan pintasan papan kekunci Windows/Linux. Ctrl ialah kekunci Control.\",\n footerHint: \"Tekan {{key}} pada bila-bila masa untuk menunjukkan bantuan ini\",\n close: \"Tutup\"\n};\nvar AnnotateToolbar = {\n modeGroup: \"Mod\",\n browse: \"Layari\",\n annotate: \"Anotasi\",\n selectionGroup: \"Motivasi\",\n clickGroup: \"Klik\",\n shapeGroup: \"Bentuk\",\n none: \"Tiada\",\n linking: \"Rujukan\",\n highlighting: \"Sorotan\",\n assessing: \"Nilai\",\n commenting: \"Ulasan\",\n tagging: \"Tag\",\n detail: \"Perincian\",\n follow: \"Ikuti\",\n deleting: \"Padam\",\n jsonld: \"JSON-LD\",\n rectangle: \"Segi Empat Tepat\",\n circle: \"Bulatan\",\n polygon: \"Poligon\"\n};\nvar CollapsibleResourceNavigation = {\n title: \"Navigasi\",\n collapseSidebar: \"Kecilkan bar sisi\",\n expandSidebar: \"Kembangkan bar sisi\",\n dragToReorder: \"Seret untuk menyusun semula\",\n dragToReorderDoc: \"Seret untuk menyusun semula {{name}}\",\n closeResource: \"Tutup sumber\",\n dragInstructions: \"Untuk menyusun semula sumber: Gunakan Tab untuk navigasi ke sumber. Tekan Alt+Anak panah atas untuk bergerak ke atas atau Alt+Anak panah bawah untuk bergerak ke bawah. Untuk seret dan lepas: Tekan bar ruang untuk mengangkat item. Gunakan kekunci anak panah untuk mengalihkannya. Tekan bar ruang sekali lagi untuk melepaskan.\"\n};\nvar ResourceViewer = {\n deleteConfirmationTitle: \"Padam Anotasi\",\n deleteConfirmationMessage: \"Adakah anda pasti mahu memadam anotasi ini? Tindakan ini tidak boleh dibatalkan.\",\n deleteConfirmationCancel: \"Batal\",\n deleteConfirmationDelete: \"Padam\"\n};\nvar Settings = {\n title: \"Tetapan\",\n lineNumbers: \"Nombor Baris\",\n lineNumbersVisible: \"Kelihatan\",\n lineNumbersHidden: \"Tersembunyi\",\n theme: \"Tema\",\n themeLight: \"Cerah\",\n themeDark: \"Gelap\",\n themeSystem: \"Sistem\",\n themeSystemActive: \"Sistem ({{mode}})\",\n themeModeActive: \"Menggunakan mod {{mode}}\",\n language: \"Bahasa\",\n languageHint: \"Tukar bahasa dalam navigasi utama\",\n languageChanging: \"Menukar bahasa...\",\n hoverDelay: \"Kelewatan Terapung\",\n hoverDelayFast: \"Pantas\",\n hoverDelaySlow: \"Perlahan\",\n hoverDelayDescription: \"Kelewatan {{delay}}ms sebelum kesan terapung muncul\"\n};\nvar AnnotateView = {};\nvar ReferenceWizard = {\n gatherTitle: \"Konteks Dikumpul\",\n configureGenerationTitle: \"Konfigurasi Penjanaan\",\n configureSearchTitle: \"Konfigurasi carian\",\n searchResultsTitle: \"Hasil carian\",\n sourceContextLabel: \"Konteks anotasi dalam sumber\",\n connectionsLabel: \"Anotasi rakan sebaya\",\n citedByLabel: \"Sumber dipetik oleh\",\n userHintLabel: \"Petunjuk\",\n userHintPlaceholder: \"Terangkan apa yang dirujuk oleh anotasi ini...\",\n loadingContext: \"Mengumpul konteks...\",\n failedContext: \"Gagal mengumpul konteks\",\n cancel: \"Batal\",\n generate: \"Jana\",\n compose: \"Karang\",\n resolutionStrategyLabel: \"Strategi resolusi\",\n back: \"Kembali\",\n link: \"Pautan\",\n score: \"Skor\",\n noResults: \"Tiada hasil ditemui\",\n resourceTitle: \"Tajuk Sumber\",\n resourceTitlePlaceholder: \"Masukkan tajuk sumber...\",\n additionalInstructions: \"Arahan Tambahan\",\n additionalInstructionsPlaceholder: \"Masukkan arahan tambahan...\",\n language: \"Bahasa\",\n languageHelp: \"Bahasa untuk kandungan yang dijana\",\n creativity: \"Kreativiti\",\n creativityFocused: \"Tertumpu\",\n creativityCreative: \"Kreatif\",\n maxLength: \"Panjang Maksimum\",\n maxLengthHelp: \"Bilangan maksimum token\",\n maxResults: \"Hasil Maksimum\",\n semanticScoring: \"Pemarkahan Semantik\",\n semanticScoringHelp: \"Gunakan AI untuk menilai hasil mengikut kerelevanan semantik\",\n searching: \"Mencari...\",\n search: \"Cari\"\n};\nvar History = {\n embeddingComputed: \"Embedding dikira\"\n};\nvar ms_default = {\n Toolbar,\n ResourceInfoPanel,\n CollaborationPanel,\n AnnotationHistory,\n CommentsPanel,\n HighlightPanel,\n AssessmentPanel,\n TaggingPanel,\n UnifiedAnnotationsPanel,\n StatisticsPanel,\n ReferencesPanel,\n KeyboardShortcuts,\n AnnotateToolbar,\n CollapsibleResourceNavigation,\n ResourceViewer,\n Settings,\n AnnotateView,\n ReferenceWizard,\n History\n};\nexport {\n AnnotateToolbar,\n AnnotateView,\n AnnotationHistory,\n AssessmentPanel,\n CollaborationPanel,\n CollapsibleResourceNavigation,\n CommentsPanel,\n HighlightPanel,\n History,\n KeyboardShortcuts,\n ReferenceWizard,\n ReferencesPanel,\n ResourceInfoPanel,\n ResourceViewer,\n Settings,\n StatisticsPanel,\n TaggingPanel,\n Toolbar,\n UnifiedAnnotationsPanel,\n ms_default as default\n};\n//# sourceMappingURL=ms-5DGSFKM2.mjs.map"],"names":["Toolbar","ResourceInfoPanel","CollaborationPanel","AnnotationHistory","CommentsPanel","HighlightPanel","AssessmentPanel","TaggingPanel","UnifiedAnnotationsPanel","StatisticsPanel","ReferencesPanel","KeyboardShortcuts","AnnotateToolbar","CollapsibleResourceNavigation","ResourceViewer","Settings","AnnotateView","ReferenceWizard","History","ms_default"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e={annotations:"Annotaties",history:"Geschiedenis",resourceInfo:"Broninformatie",collaboration:"Samenwerking",userAccount:"Gebruikersaccount",settings:"Instellingen",knowledgeBase:"Kennisbank"},n={title:"Broninformatie",locale:"Taalregio",notSpecified:"Niet gespecificeerd",entityTypeTags:"Entiteitstypelabels",representation:"Representatie",mediaType:"Mediatype",byteSize:"Grootte",clone:"Klonen",cloneDescription:"Genereer een deelbare kloonlink voor deze bron",archive:"Archiveren",archiveDescription:"Verplaats deze bron naar gearchiveerde status",unarchive:"Dearchiveren",unarchiveDescription:"Herstel deze bron naar actieve status",provenance:"Herkomst",createdAt:"Aangemaakt",modifiedAt:"Gewijzigd",creationMethod:"Aanmaakmethode",attributedTo:"Toegeschreven aan",derivedFrom:"Afgeleid van",generatedBy:"Gegenereerd door",storageUri:"Opslag"},t={title:"Samenwerking",connectionStatus:"Verbindingsstatus",live:"Live",disconnected:"Verbroken",events:"{{count}} gebeurtenissen",lastSync:"Laatste synchronisatie:",noActivity:"Nog geen activiteit",justNow:"Zojuist",secondsAgo:"{{count}} seconden geleden",minuteAgo:"1 minuut geleden",minutesAgo:"{{count}} minuten geleden",hourAgo:"1 uur geleden",hoursAgo:"{{count}} uur geleden",realtimeActive:"Realtime-updates zijn actief",reconnecting:"Opnieuw verbinden met server...",sharing:"Delen",collaborationComingSoon:"Samenwerkingsfuncties komen binnenkort"},a={history:"Geschiedenis",loading:"Laden...",user:"Gebruiker",method:"Methode",viewOriginal:"Origineel bekijken",viewAnnotation:"Annotatie bekijken: {{content}}",resourceCreated:"Bron aangemaakt",resourceCloned:"Gekloond",resourceArchived:"Gearchiveerd",resourceUnarchived:"Gedearchiveerd",highlightAdded:"Markering toegevoegd",highlightRemoved:"Markering verwijderd",referenceCreated:"Referentie aangemaakt",referenceResolved:"Referentie opgelost",referenceDeleted:"Referentie verwijderd",entitytagAdded:"Label toegevoegd",entitytagRemoved:"Label verwijderd",assessmentAdded:"Beoordeling toegevoegd",assessmentRemoved:"Beoordeling verwijderd",annotationAdded:"Annotatie toegevoegd",annotationRemoved:"Annotatie verwijderd",annotationBodyUpdated:"Annotatie bijgewerkt",jobEvent:"Taakgebeurtenis",justNow:"zojuist",minutesAgo:"{{count}}m geleden",hoursAgo:"{{count}}u geleden",daysAgo:"{{count}}d geleden"},i={title:"Opmerkingen",noComments:"Nog geen opmerkingen. Selecteer tekst en klik op Opmerking om er een toe te voegen.",commentPlaceholder:"Typ hier je opmerking...",save:"Opslaan",cancel:"Annuleren",edit:"Bewerken",annotateComments:"Opmerkingen annoteren",instructions:"Instructies",optional:"(optioneel)",instructionsPlaceholder:"bijv. Focus op technische terminologie...",annotate:"Annoteren",annotating:"Annoteren...",toneLabel:"Toon",toneOptional:"(optioneel)",toneScholarly:"Wetenschappelijk",toneExplanatory:"Verklarend",toneConversational:"Conversationeel",toneTechnical:"Technisch",densityLabel:"Dichtheid",densitySparse:"Schaars",densityDense:"Dicht",fragmentSelected:"Fragment geselecteerd",imageRegionSelected:"Afbeeldingsgebied geselecteerd",closeProgress:"Sluiten"},o={title:"Markeringen",noHighlights:"Nog geen markeringen. Gebruik AI-annotatie om belangrijke passages te vinden.",annotateHighlights:"Markeringen annoteren",instructions:"Instructies",optional:"(optioneel)",instructionsPlaceholder:"bijv. Focus op belangrijke technische concepten...",annotate:"Annoteren",annotating:"Annoteren...",cancel:"Annuleren",densityLabel:"Dichtheid",densitySparse:"Schaars",densityDense:"Dicht",closeProgress:"Sluiten"},r={title:"Beoordelingen",noAssessments:"Nog geen beoordelingen. Gebruik AI-annotatie om passages te evalueren.",assessmentPlaceholder:"Typ hier je beoordeling...",save:"Opslaan",cancel:"Annuleren",annotateAssessments:"Beoordelingen annoteren",instructions:"Instructies",optional:"(optioneel)",instructionsPlaceholder:"bijv. Evalueer beweringen op nauwkeurigheid en bewijs...",annotate:"Annoteren",annotating:"Annoteren...",toneLabel:"Toon",toneOptional:"(optioneel)",toneAnalytical:"Analytisch",toneCritical:"Kritisch",toneBalanced:"Evenwichtig",toneConstructive:"Constructief",densityLabel:"Dichtheid",densitySparse:"Schaars",densityDense:"Dicht",fragmentSelected:"Fragment geselecteerd",imageRegionSelected:"Afbeeldingsgebied geselecteerd",closeProgress:"Sluiten"},s={title:"Labels",noTags:"Nog geen labels. Gebruik AI-annotatie om structurele rollen te identificeren.",annotateTags:"Labels annoteren",selectSchema:"Framework selecteren",schemaLegal:"Juridische analyse (IRAC)",schemaScientific:"Wetenschappelijk artikel (IMRAD)",schemaArgument:"Argumentstructuur (Toulmin)",selectCategories:"Categorieën selecteren",categoryIssue:"Kwestie",categoryRule:"Regel",categoryApplication:"Toepassing",categoryConclusion:"Conclusie",categoryIntroduction:"Inleiding",categoryMethods:"Methoden",categoryResults:"Resultaten",categoryDiscussion:"Discussie",categoryClaim:"Bewering",categoryEvidence:"Bewijs",categoryWarrant:"Grondslag",categoryCounterargument:"Tegenargument",categoryRebuttal:"Weerlegging",annotate:"Annoteren",annotating:"Annoteren...",cancel:"Annuleren",selectAll:"Alles selecteren",deselectAll:"Alles deselecteren",categoriesSelected:"{count, plural, =0 {Geen categorieën geselecteerd} =1 {1 categorie geselecteerd} other {# categorieën geselecteerd}}",createTagForSelection:"Label maken voor selectie",selectCategory:"Categorie selecteren",chooseCategory:"Kies een categorie...",fragmentSelected:"Fragment geselecteerd",imageRegionSelected:"Afbeeldingsgebied geselecteerd"},l={title:"Annotaties",statistics:"Statistieken",highlight:"Markeringen",reference:"Referenties",assessment:"Beoordelingen",comment:"Opmerkingen",tag:"Labels"},c={title:"Statistieken",highlights:"Markeringen",comments:"Opmerkingen",assessments:"Beoordelingen",tags:"Labels",references:"Referenties",stub:"Stub",resolved:"Opgelost",entityTypes:"Entiteitstypen"},g={title:"Referenties",noReferences:"Nog geen referenties. Selecteer tekst om referenties naar andere bronnen te maken.",outgoingReferences:"Uitgaande referenties",incomingReferences:"Inkomende referenties",noIncomingReferences:"Geen inkomende referenties",stub:"Stubreferentie (niet gekoppeld)",resolved:"Opgeloste referentie (gekoppeld)",open:"Openen",unlink:"Ontkoppelen",resolve:"Referentie oplossen",cancel:"Annuleren",createReference:"Referentie maken",entityTypesOptional:"Entiteitstypen (optioneel)",fragmentSelected:"Fragment geselecteerd",imageRegionSelected:"Afbeeldingsgebied geselecteerd",annotateReferences:"Referenties annoteren",selectEntityTypes:"Entiteitstypen:",select:"Selecteren",deselect:"Deselecteren",noEntityTypes:"Geen entiteitstypen beschikbaar",typesSelected:"{count, plural, =1 {1 type geselecteerd} other {# typen geselecteerd}}",annotate:"Annoteren",annotating:"Annoteren...",includeDescriptiveReferences:"Beschrijvende referenties opnemen",descriptiveReferencesTooltip:"Zoek ook naar zinnen zoals 'de CEO', 'de techgigant', 'de fysicus' (naast namen)",annotationProgressTitle:"Entiteitsreferenties annoteren",cancelAnnotation:"Annotatie annuleren",found:"{{count}} gevonden",complete:"Annotatie voltooid!",failed:"Annotatie mislukt",current:"Huidig: {{entityType}}",closeProgress:"Sluiten",loading:"laden...",loadingEllipsis:"Laden...",untitledResource:"Naamloze bron",noText:"Geen tekst"},d={title:"Sneltoetsen",closeDialog:"Dialoogvenster sluiten",or:"of",navigationTitle:"Navigatie",navOpenSearch:"Globale zoekopdracht openen",navOpenSearchAlt:"Globale zoekopdracht openen (alternatief)",navCreateResource:"Nieuwe bron aanmaken",navCloseOverlays:"Alle overlays sluiten (dubbel drukken)",navShowHelp:"Sneltoetshulp tonen",sidebarTitle:"Kenniszijbalk",sidebarCollapse:"Zijbalk inklappen",sidebarExpand:"Zijbalk uitklappen",sidebarPickup:"Brontabblad oppakken (bij focus)",sidebarMove:"Brontabblad verplaatsen (bij slepen)",sidebarDrop:"Brontabblad neerzetten (bij slepen)",sidebarCancel:"Sleepbewerking annuleren",annotationsTitle:"Bronannotaties",annotHighlight:"Markering maken van annotatie (direct)",annotReference:"Referentiepopup openen voor annotatie",annotDelete:"Gefocuste annotatie verwijderen",annotNavigate:"Door annotaties navigeren",annotNavigateBack:"Achterwaarts door annotaties navigeren",listsTitle:"Lijsten & rasters",listsFilterNav:"Door entiteitstypefilters navigeren",listsGridNav:"Door bronnenraster navigeren",listsJumpFirst:"Naar eerste item springen",listsJumpLast:"Naar laatste item springen",searchModalTitle:"In zoekvenster",searchNav:"Door zoekresultaten navigeren",searchSelect:"Resultaat selecteren",searchClose:"Zoekvenster sluiten",modalTitle:"Vensterbediening",modalClose:"Actief venster sluiten",modalNavForward:"Voorwaarts door knoppen navigeren",modalNavBackward:"Achterwaarts door knoppen navigeren",modalActivate:"Gefocuste knop activeren",accessibilityTitle:"Toegankelijkheid",a11ySkipLinks:"Naar skiplinks navigeren (bij begin van pagina)",a11yFollowLink:"Skiplink volgen",macNote:"Mac-sneltoetsen worden gebruikt. Command is de Command-toets.",windowsNote:"Windows/Linux-sneltoetsen worden gebruikt. Ctrl is de Control-toets.",footerHint:"Druk op {{key}} om deze hulp op elk moment te tonen",close:"Sluiten"},u={modeGroup:"Modus",browse:"Bladeren",annotate:"Annoteren",selectionGroup:"Motivatie",clickGroup:"Klik",shapeGroup:"Vorm",none:"Geen",linking:"Referentie",highlighting:"Markering",assessing:"Beoordelen",commenting:"Opmerking",tagging:"Labelen",detail:"Detail",follow:"Volgen",deleting:"Verwijderen",jsonld:"JSON-LD",rectangle:"Rechthoek",circle:"Cirkel",polygon:"Polygoon"},m={title:"Navigatie",collapseSidebar:"Zijbalk inklappen",expandSidebar:"Zijbalk uitklappen",dragToReorder:"Slepen om te herordenen",dragToReorderDoc:"Slepen om {{name}} te herordenen",closeResource:"Bron sluiten",dragInstructions:"Om bronnen te herordenen: Gebruik Tab om naar een bron te navigeren. Druk op Alt+pijl omhoog om omhoog te verplaatsen of Alt+pijl omlaag om omlaag te verplaatsen. Voor slepen en neerzetten: Druk op de spatiebalk om het item op te pakken. Gebruik pijltoetsen om het te verplaatsen. Druk nogmaals op de spatiebalk om het neer te zetten."},p={deleteConfirmationTitle:"Annotatie verwijderen",deleteConfirmationMessage:"Weet je zeker dat je deze annotatie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",deleteConfirmationCancel:"Annuleren",deleteConfirmationDelete:"Verwijderen"},v={title:"Instellingen",lineNumbers:"Regelnummers",lineNumbersVisible:"Zichtbaar",lineNumbersHidden:"Verborgen",theme:"Thema",themeLight:"Licht",themeDark:"Donker",themeSystem:"Systeem",themeSystemActive:"Systeem ({{mode}})",themeModeActive:"{{mode}}-modus gebruiken",language:"Taal",languageHint:"Wijzig de taal in de hoofdnavigatie",languageChanging:"Taal wijzigen...",hoverDelay:"Zweefvertraging",hoverDelayFast:"Snel",hoverDelaySlow:"Langzaam",hoverDelayDescription:"{{delay}}ms vertraging voordat zweefeffecten verschijnen"},k={ariaLabel:"Annotatie maken van geselecteerde tekst. Druk op H voor markering of R voor referentie.",tooltip:"Klik om markering te maken • Rechtsklik voor meer opties"},h={gatherTitle:"Verzamelde context",configureGenerationTitle:"Generatie configureren",configureSearchTitle:"Zoeken configureren",searchResultsTitle:"Zoekresultaten",sourceContextLabel:"Annotatiecontext in resource",connectionsLabel:"Peer-annotaties",citedByLabel:"Resource geciteerd door",userHintLabel:"Hint",userHintPlaceholder:"Beschrijf waar deze annotatie naar verwijst...",loadingContext:"Context wordt verzameld...",failedContext:"Context verzamelen mislukt",cancel:"Annuleren",generate:"Genereren",compose:"Opstellen",resolutionStrategyLabel:"Resolutiestrategie",back:"Terug",link:"Link",score:"Score",noResults:"Geen resultaten gevonden",resourceTitle:"Brontitel",resourceTitlePlaceholder:"Voer brontitel in...",additionalInstructions:"Aanvullende instructies",additionalInstructionsPlaceholder:"Voer aanvullende instructies in...",language:"Taal",languageHelp:"Taal voor gegenereerde inhoud",creativity:"Creativiteit",creativityFocused:"Gericht",creativityCreative:"Creatief",maxLength:"Maximale lengte",maxLengthHelp:"Maximaal aantal tokens",maxResults:"Maximale resultaten",semanticScoring:"Semantische beoordeling",semanticScoringHelp:"Gebruik AI om resultaten te beoordelen op semantische relevantie",searching:"Zoeken...",search:"Zoeken"},b={embeddingComputed:"Embedding berekend"},f={Toolbar:e,ResourceInfoPanel:n,CollaborationPanel:t,AnnotationHistory:a,CommentsPanel:i,HighlightPanel:o,AssessmentPanel:r,TaggingPanel:s,UnifiedAnnotationsPanel:l,StatisticsPanel:c,ReferencesPanel:g,KeyboardShortcuts:d,AnnotateToolbar:u,CollapsibleResourceNavigation:m,ResourceViewer:p,Settings:v,AnnotateView:k,ReferenceWizard:h,History:b};export{u as AnnotateToolbar,k as AnnotateView,a as AnnotationHistory,r as AssessmentPanel,t as CollaborationPanel,m as CollapsibleResourceNavigation,i as CommentsPanel,o as HighlightPanel,b as History,d as KeyboardShortcuts,h as ReferenceWizard,g as ReferencesPanel,n as ResourceInfoPanel,p as ResourceViewer,v as Settings,c as StatisticsPanel,s as TaggingPanel,e as Toolbar,l as UnifiedAnnotationsPanel,f as default};
2
+ //# sourceMappingURL=nl-VZPCGONO-BJ0llUPS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nl-VZPCGONO-BJ0llUPS.js","sources":["../../../../packages/react-ui/dist/nl-VZPCGONO.mjs"],"sourcesContent":["'use client';\nimport \"./chunk-D4GAAQMM.mjs\";\n\n// translations/nl.json\nvar Toolbar = {\n annotations: \"Annotaties\",\n history: \"Geschiedenis\",\n resourceInfo: \"Broninformatie\",\n collaboration: \"Samenwerking\",\n userAccount: \"Gebruikersaccount\",\n settings: \"Instellingen\",\n knowledgeBase: \"Kennisbank\"\n};\nvar ResourceInfoPanel = {\n title: \"Broninformatie\",\n locale: \"Taalregio\",\n notSpecified: \"Niet gespecificeerd\",\n entityTypeTags: \"Entiteitstypelabels\",\n representation: \"Representatie\",\n mediaType: \"Mediatype\",\n byteSize: \"Grootte\",\n clone: \"Klonen\",\n cloneDescription: \"Genereer een deelbare kloonlink voor deze bron\",\n archive: \"Archiveren\",\n archiveDescription: \"Verplaats deze bron naar gearchiveerde status\",\n unarchive: \"Dearchiveren\",\n unarchiveDescription: \"Herstel deze bron naar actieve status\",\n provenance: \"Herkomst\",\n createdAt: \"Aangemaakt\",\n modifiedAt: \"Gewijzigd\",\n creationMethod: \"Aanmaakmethode\",\n attributedTo: \"Toegeschreven aan\",\n derivedFrom: \"Afgeleid van\",\n generatedBy: \"Gegenereerd door\",\n storageUri: \"Opslag\"\n};\nvar CollaborationPanel = {\n title: \"Samenwerking\",\n connectionStatus: \"Verbindingsstatus\",\n live: \"Live\",\n disconnected: \"Verbroken\",\n events: \"{{count}} gebeurtenissen\",\n lastSync: \"Laatste synchronisatie:\",\n noActivity: \"Nog geen activiteit\",\n justNow: \"Zojuist\",\n secondsAgo: \"{{count}} seconden geleden\",\n minuteAgo: \"1 minuut geleden\",\n minutesAgo: \"{{count}} minuten geleden\",\n hourAgo: \"1 uur geleden\",\n hoursAgo: \"{{count}} uur geleden\",\n realtimeActive: \"Realtime-updates zijn actief\",\n reconnecting: \"Opnieuw verbinden met server...\",\n sharing: \"Delen\",\n collaborationComingSoon: \"Samenwerkingsfuncties komen binnenkort\"\n};\nvar AnnotationHistory = {\n history: \"Geschiedenis\",\n loading: \"Laden...\",\n user: \"Gebruiker\",\n method: \"Methode\",\n viewOriginal: \"Origineel bekijken\",\n viewAnnotation: \"Annotatie bekijken: {{content}}\",\n resourceCreated: \"Bron aangemaakt\",\n resourceCloned: \"Gekloond\",\n resourceArchived: \"Gearchiveerd\",\n resourceUnarchived: \"Gedearchiveerd\",\n highlightAdded: \"Markering toegevoegd\",\n highlightRemoved: \"Markering verwijderd\",\n referenceCreated: \"Referentie aangemaakt\",\n referenceResolved: \"Referentie opgelost\",\n referenceDeleted: \"Referentie verwijderd\",\n entitytagAdded: \"Label toegevoegd\",\n entitytagRemoved: \"Label verwijderd\",\n assessmentAdded: \"Beoordeling toegevoegd\",\n assessmentRemoved: \"Beoordeling verwijderd\",\n annotationAdded: \"Annotatie toegevoegd\",\n annotationRemoved: \"Annotatie verwijderd\",\n annotationBodyUpdated: \"Annotatie bijgewerkt\",\n jobEvent: \"Taakgebeurtenis\",\n justNow: \"zojuist\",\n minutesAgo: \"{{count}}m geleden\",\n hoursAgo: \"{{count}}u geleden\",\n daysAgo: \"{{count}}d geleden\"\n};\nvar CommentsPanel = {\n title: \"Opmerkingen\",\n noComments: \"Nog geen opmerkingen. Selecteer tekst en klik op Opmerking om er een toe te voegen.\",\n commentPlaceholder: \"Typ hier je opmerking...\",\n save: \"Opslaan\",\n cancel: \"Annuleren\",\n edit: \"Bewerken\",\n annotateComments: \"Opmerkingen annoteren\",\n instructions: \"Instructies\",\n optional: \"(optioneel)\",\n instructionsPlaceholder: \"bijv. Focus op technische terminologie...\",\n annotate: \"Annoteren\",\n annotating: \"Annoteren...\",\n toneLabel: \"Toon\",\n toneOptional: \"(optioneel)\",\n toneScholarly: \"Wetenschappelijk\",\n toneExplanatory: \"Verklarend\",\n toneConversational: \"Conversationeel\",\n toneTechnical: \"Technisch\",\n densityLabel: \"Dichtheid\",\n densitySparse: \"Schaars\",\n densityDense: \"Dicht\",\n fragmentSelected: \"Fragment geselecteerd\",\n imageRegionSelected: \"Afbeeldingsgebied geselecteerd\",\n closeProgress: \"Sluiten\"\n};\nvar HighlightPanel = {\n title: \"Markeringen\",\n noHighlights: \"Nog geen markeringen. Gebruik AI-annotatie om belangrijke passages te vinden.\",\n annotateHighlights: \"Markeringen annoteren\",\n instructions: \"Instructies\",\n optional: \"(optioneel)\",\n instructionsPlaceholder: \"bijv. Focus op belangrijke technische concepten...\",\n annotate: \"Annoteren\",\n annotating: \"Annoteren...\",\n cancel: \"Annuleren\",\n densityLabel: \"Dichtheid\",\n densitySparse: \"Schaars\",\n densityDense: \"Dicht\",\n closeProgress: \"Sluiten\"\n};\nvar AssessmentPanel = {\n title: \"Beoordelingen\",\n noAssessments: \"Nog geen beoordelingen. Gebruik AI-annotatie om passages te evalueren.\",\n assessmentPlaceholder: \"Typ hier je beoordeling...\",\n save: \"Opslaan\",\n cancel: \"Annuleren\",\n annotateAssessments: \"Beoordelingen annoteren\",\n instructions: \"Instructies\",\n optional: \"(optioneel)\",\n instructionsPlaceholder: \"bijv. Evalueer beweringen op nauwkeurigheid en bewijs...\",\n annotate: \"Annoteren\",\n annotating: \"Annoteren...\",\n toneLabel: \"Toon\",\n toneOptional: \"(optioneel)\",\n toneAnalytical: \"Analytisch\",\n toneCritical: \"Kritisch\",\n toneBalanced: \"Evenwichtig\",\n toneConstructive: \"Constructief\",\n densityLabel: \"Dichtheid\",\n densitySparse: \"Schaars\",\n densityDense: \"Dicht\",\n fragmentSelected: \"Fragment geselecteerd\",\n imageRegionSelected: \"Afbeeldingsgebied geselecteerd\",\n closeProgress: \"Sluiten\"\n};\nvar TaggingPanel = {\n title: \"Labels\",\n noTags: \"Nog geen labels. Gebruik AI-annotatie om structurele rollen te identificeren.\",\n annotateTags: \"Labels annoteren\",\n selectSchema: \"Framework selecteren\",\n schemaLegal: \"Juridische analyse (IRAC)\",\n schemaScientific: \"Wetenschappelijk artikel (IMRAD)\",\n schemaArgument: \"Argumentstructuur (Toulmin)\",\n selectCategories: \"Categorie\\xEBn selecteren\",\n categoryIssue: \"Kwestie\",\n categoryRule: \"Regel\",\n categoryApplication: \"Toepassing\",\n categoryConclusion: \"Conclusie\",\n categoryIntroduction: \"Inleiding\",\n categoryMethods: \"Methoden\",\n categoryResults: \"Resultaten\",\n categoryDiscussion: \"Discussie\",\n categoryClaim: \"Bewering\",\n categoryEvidence: \"Bewijs\",\n categoryWarrant: \"Grondslag\",\n categoryCounterargument: \"Tegenargument\",\n categoryRebuttal: \"Weerlegging\",\n annotate: \"Annoteren\",\n annotating: \"Annoteren...\",\n cancel: \"Annuleren\",\n selectAll: \"Alles selecteren\",\n deselectAll: \"Alles deselecteren\",\n categoriesSelected: \"{count, plural, =0 {Geen categorie\\xEBn geselecteerd} =1 {1 categorie geselecteerd} other {# categorie\\xEBn geselecteerd}}\",\n createTagForSelection: \"Label maken voor selectie\",\n selectCategory: \"Categorie selecteren\",\n chooseCategory: \"Kies een categorie...\",\n fragmentSelected: \"Fragment geselecteerd\",\n imageRegionSelected: \"Afbeeldingsgebied geselecteerd\"\n};\nvar UnifiedAnnotationsPanel = {\n title: \"Annotaties\",\n statistics: \"Statistieken\",\n highlight: \"Markeringen\",\n reference: \"Referenties\",\n assessment: \"Beoordelingen\",\n comment: \"Opmerkingen\",\n tag: \"Labels\"\n};\nvar StatisticsPanel = {\n title: \"Statistieken\",\n highlights: \"Markeringen\",\n comments: \"Opmerkingen\",\n assessments: \"Beoordelingen\",\n tags: \"Labels\",\n references: \"Referenties\",\n stub: \"Stub\",\n resolved: \"Opgelost\",\n entityTypes: \"Entiteitstypen\"\n};\nvar ReferencesPanel = {\n title: \"Referenties\",\n noReferences: \"Nog geen referenties. Selecteer tekst om referenties naar andere bronnen te maken.\",\n outgoingReferences: \"Uitgaande referenties\",\n incomingReferences: \"Inkomende referenties\",\n noIncomingReferences: \"Geen inkomende referenties\",\n stub: \"Stubreferentie (niet gekoppeld)\",\n resolved: \"Opgeloste referentie (gekoppeld)\",\n open: \"Openen\",\n unlink: \"Ontkoppelen\",\n resolve: \"Referentie oplossen\",\n cancel: \"Annuleren\",\n createReference: \"Referentie maken\",\n entityTypesOptional: \"Entiteitstypen (optioneel)\",\n fragmentSelected: \"Fragment geselecteerd\",\n imageRegionSelected: \"Afbeeldingsgebied geselecteerd\",\n annotateReferences: \"Referenties annoteren\",\n selectEntityTypes: \"Entiteitstypen:\",\n select: \"Selecteren\",\n deselect: \"Deselecteren\",\n noEntityTypes: \"Geen entiteitstypen beschikbaar\",\n typesSelected: \"{count, plural, =1 {1 type geselecteerd} other {# typen geselecteerd}}\",\n annotate: \"Annoteren\",\n annotating: \"Annoteren...\",\n includeDescriptiveReferences: \"Beschrijvende referenties opnemen\",\n descriptiveReferencesTooltip: \"Zoek ook naar zinnen zoals 'de CEO', 'de techgigant', 'de fysicus' (naast namen)\",\n annotationProgressTitle: \"Entiteitsreferenties annoteren\",\n cancelAnnotation: \"Annotatie annuleren\",\n found: \"{{count}} gevonden\",\n complete: \"Annotatie voltooid!\",\n failed: \"Annotatie mislukt\",\n current: \"Huidig: {{entityType}}\",\n closeProgress: \"Sluiten\",\n loading: \"laden...\",\n loadingEllipsis: \"Laden...\",\n untitledResource: \"Naamloze bron\",\n noText: \"Geen tekst\"\n};\nvar KeyboardShortcuts = {\n title: \"Sneltoetsen\",\n closeDialog: \"Dialoogvenster sluiten\",\n or: \"of\",\n navigationTitle: \"Navigatie\",\n navOpenSearch: \"Globale zoekopdracht openen\",\n navOpenSearchAlt: \"Globale zoekopdracht openen (alternatief)\",\n navCreateResource: \"Nieuwe bron aanmaken\",\n navCloseOverlays: \"Alle overlays sluiten (dubbel drukken)\",\n navShowHelp: \"Sneltoetshulp tonen\",\n sidebarTitle: \"Kenniszijbalk\",\n sidebarCollapse: \"Zijbalk inklappen\",\n sidebarExpand: \"Zijbalk uitklappen\",\n sidebarPickup: \"Brontabblad oppakken (bij focus)\",\n sidebarMove: \"Brontabblad verplaatsen (bij slepen)\",\n sidebarDrop: \"Brontabblad neerzetten (bij slepen)\",\n sidebarCancel: \"Sleepbewerking annuleren\",\n annotationsTitle: \"Bronannotaties\",\n annotHighlight: \"Markering maken van annotatie (direct)\",\n annotReference: \"Referentiepopup openen voor annotatie\",\n annotDelete: \"Gefocuste annotatie verwijderen\",\n annotNavigate: \"Door annotaties navigeren\",\n annotNavigateBack: \"Achterwaarts door annotaties navigeren\",\n listsTitle: \"Lijsten & rasters\",\n listsFilterNav: \"Door entiteitstypefilters navigeren\",\n listsGridNav: \"Door bronnenraster navigeren\",\n listsJumpFirst: \"Naar eerste item springen\",\n listsJumpLast: \"Naar laatste item springen\",\n searchModalTitle: \"In zoekvenster\",\n searchNav: \"Door zoekresultaten navigeren\",\n searchSelect: \"Resultaat selecteren\",\n searchClose: \"Zoekvenster sluiten\",\n modalTitle: \"Vensterbediening\",\n modalClose: \"Actief venster sluiten\",\n modalNavForward: \"Voorwaarts door knoppen navigeren\",\n modalNavBackward: \"Achterwaarts door knoppen navigeren\",\n modalActivate: \"Gefocuste knop activeren\",\n accessibilityTitle: \"Toegankelijkheid\",\n a11ySkipLinks: \"Naar skiplinks navigeren (bij begin van pagina)\",\n a11yFollowLink: \"Skiplink volgen\",\n macNote: \"Mac-sneltoetsen worden gebruikt. Command is de Command-toets.\",\n windowsNote: \"Windows/Linux-sneltoetsen worden gebruikt. Ctrl is de Control-toets.\",\n footerHint: \"Druk op {{key}} om deze hulp op elk moment te tonen\",\n close: \"Sluiten\"\n};\nvar AnnotateToolbar = {\n modeGroup: \"Modus\",\n browse: \"Bladeren\",\n annotate: \"Annoteren\",\n selectionGroup: \"Motivatie\",\n clickGroup: \"Klik\",\n shapeGroup: \"Vorm\",\n none: \"Geen\",\n linking: \"Referentie\",\n highlighting: \"Markering\",\n assessing: \"Beoordelen\",\n commenting: \"Opmerking\",\n tagging: \"Labelen\",\n detail: \"Detail\",\n follow: \"Volgen\",\n deleting: \"Verwijderen\",\n jsonld: \"JSON-LD\",\n rectangle: \"Rechthoek\",\n circle: \"Cirkel\",\n polygon: \"Polygoon\"\n};\nvar CollapsibleResourceNavigation = {\n title: \"Navigatie\",\n collapseSidebar: \"Zijbalk inklappen\",\n expandSidebar: \"Zijbalk uitklappen\",\n dragToReorder: \"Slepen om te herordenen\",\n dragToReorderDoc: \"Slepen om {{name}} te herordenen\",\n closeResource: \"Bron sluiten\",\n dragInstructions: \"Om bronnen te herordenen: Gebruik Tab om naar een bron te navigeren. Druk op Alt+pijl omhoog om omhoog te verplaatsen of Alt+pijl omlaag om omlaag te verplaatsen. Voor slepen en neerzetten: Druk op de spatiebalk om het item op te pakken. Gebruik pijltoetsen om het te verplaatsen. Druk nogmaals op de spatiebalk om het neer te zetten.\"\n};\nvar ResourceViewer = {\n deleteConfirmationTitle: \"Annotatie verwijderen\",\n deleteConfirmationMessage: \"Weet je zeker dat je deze annotatie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.\",\n deleteConfirmationCancel: \"Annuleren\",\n deleteConfirmationDelete: \"Verwijderen\"\n};\nvar Settings = {\n title: \"Instellingen\",\n lineNumbers: \"Regelnummers\",\n lineNumbersVisible: \"Zichtbaar\",\n lineNumbersHidden: \"Verborgen\",\n theme: \"Thema\",\n themeLight: \"Licht\",\n themeDark: \"Donker\",\n themeSystem: \"Systeem\",\n themeSystemActive: \"Systeem ({{mode}})\",\n themeModeActive: \"{{mode}}-modus gebruiken\",\n language: \"Taal\",\n languageHint: \"Wijzig de taal in de hoofdnavigatie\",\n languageChanging: \"Taal wijzigen...\",\n hoverDelay: \"Zweefvertraging\",\n hoverDelayFast: \"Snel\",\n hoverDelaySlow: \"Langzaam\",\n hoverDelayDescription: \"{{delay}}ms vertraging voordat zweefeffecten verschijnen\"\n};\nvar AnnotateView = {\n ariaLabel: \"Annotatie maken van geselecteerde tekst. Druk op H voor markering of R voor referentie.\",\n tooltip: \"Klik om markering te maken \\u2022 Rechtsklik voor meer opties\"\n};\nvar ReferenceWizard = {\n gatherTitle: \"Verzamelde context\",\n configureGenerationTitle: \"Generatie configureren\",\n configureSearchTitle: \"Zoeken configureren\",\n searchResultsTitle: \"Zoekresultaten\",\n sourceContextLabel: \"Annotatiecontext in resource\",\n connectionsLabel: \"Peer-annotaties\",\n citedByLabel: \"Resource geciteerd door\",\n userHintLabel: \"Hint\",\n userHintPlaceholder: \"Beschrijf waar deze annotatie naar verwijst...\",\n loadingContext: \"Context wordt verzameld...\",\n failedContext: \"Context verzamelen mislukt\",\n cancel: \"Annuleren\",\n generate: \"Genereren\",\n compose: \"Opstellen\",\n resolutionStrategyLabel: \"Resolutiestrategie\",\n back: \"Terug\",\n link: \"Link\",\n score: \"Score\",\n noResults: \"Geen resultaten gevonden\",\n resourceTitle: \"Brontitel\",\n resourceTitlePlaceholder: \"Voer brontitel in...\",\n additionalInstructions: \"Aanvullende instructies\",\n additionalInstructionsPlaceholder: \"Voer aanvullende instructies in...\",\n language: \"Taal\",\n languageHelp: \"Taal voor gegenereerde inhoud\",\n creativity: \"Creativiteit\",\n creativityFocused: \"Gericht\",\n creativityCreative: \"Creatief\",\n maxLength: \"Maximale lengte\",\n maxLengthHelp: \"Maximaal aantal tokens\",\n maxResults: \"Maximale resultaten\",\n semanticScoring: \"Semantische beoordeling\",\n semanticScoringHelp: \"Gebruik AI om resultaten te beoordelen op semantische relevantie\",\n searching: \"Zoeken...\",\n search: \"Zoeken\"\n};\nvar History = {\n embeddingComputed: \"Embedding berekend\"\n};\nvar nl_default = {\n Toolbar,\n ResourceInfoPanel,\n CollaborationPanel,\n AnnotationHistory,\n CommentsPanel,\n HighlightPanel,\n AssessmentPanel,\n TaggingPanel,\n UnifiedAnnotationsPanel,\n StatisticsPanel,\n ReferencesPanel,\n KeyboardShortcuts,\n AnnotateToolbar,\n CollapsibleResourceNavigation,\n ResourceViewer,\n Settings,\n AnnotateView,\n ReferenceWizard,\n History\n};\nexport {\n AnnotateToolbar,\n AnnotateView,\n AnnotationHistory,\n AssessmentPanel,\n CollaborationPanel,\n CollapsibleResourceNavigation,\n CommentsPanel,\n HighlightPanel,\n History,\n KeyboardShortcuts,\n ReferenceWizard,\n ReferencesPanel,\n ResourceInfoPanel,\n ResourceViewer,\n Settings,\n StatisticsPanel,\n TaggingPanel,\n Toolbar,\n UnifiedAnnotationsPanel,\n nl_default as default\n};\n//# sourceMappingURL=nl-VZPCGONO.mjs.map"],"names":["Toolbar","ResourceInfoPanel","CollaborationPanel","AnnotationHistory","CommentsPanel","HighlightPanel","AssessmentPanel","TaggingPanel","UnifiedAnnotationsPanel","StatisticsPanel","ReferencesPanel","KeyboardShortcuts","AnnotateToolbar","CollapsibleResourceNavigation","ResourceViewer","Settings","AnnotateView","ReferenceWizard","History","nl_default"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e={annotations:"Merknader",history:"Historikk",resourceInfo:"Ressursinfo",collaboration:"Samarbeid",userAccount:"Brukerkonto",settings:"Innstillinger",knowledgeBase:"Kunnskapsbase"},t={title:"Ressursinfo",locale:"Språkinnstilling",notSpecified:"Ikke spesifisert",entityTypeTags:"Entitetstypemerker",representation:"Representasjon",mediaType:"Medietype",byteSize:"Størrelse",clone:"Klon",cloneDescription:"Generer en delbar klonelenke for denne ressursen",archive:"Arkiver",archiveDescription:"Flytt denne ressursen til arkivert status",unarchive:"Gjenopprett",unarchiveDescription:"Gjenopprett denne ressursen til aktiv status",provenance:"Opprinnelse",createdAt:"Opprettet",modifiedAt:"Endret",creationMethod:"Opprettelsesmetode",attributedTo:"Tilskrevet",derivedFrom:"Avledet fra",generatedBy:"Generert av",storageUri:"Lagring"},n={title:"Samarbeid",connectionStatus:"Tilkoblingsstatus",live:"Direkte",disconnected:"Frakoblet",events:"{{count}} hendelser",lastSync:"Siste synkronisering:",noActivity:"Ingen aktivitet ennå",justNow:"Akkurat nå",secondsAgo:"{{count}} sekunder siden",minuteAgo:"1 minutt siden",minutesAgo:"{{count}} minutter siden",hourAgo:"1 time siden",hoursAgo:"{{count}} timer siden",realtimeActive:"Sanntidsoppdateringer er aktive",reconnecting:"Kobler til serveren på nytt...",sharing:"Deling",collaborationComingSoon:"Samarbeidsfunksjoner kommer snart"},r={history:"Historikk",loading:"Laster...",user:"Bruker",method:"Metode",viewOriginal:"Se original",viewAnnotation:"Se merknad: {{content}}",resourceCreated:"Ressurs opprettet",resourceCloned:"Klonet",resourceArchived:"Arkivert",resourceUnarchived:"Gjenopprettet",highlightAdded:"Utheving lagt til",highlightRemoved:"Utheving fjernet",referenceCreated:"Referanse opprettet",referenceResolved:"Referanse løst",referenceDeleted:"Referanse slettet",entitytagAdded:"Merke lagt til",entitytagRemoved:"Merke fjernet",assessmentAdded:"Vurdering lagt til",assessmentRemoved:"Vurdering fjernet",annotationAdded:"Merknad lagt til",annotationRemoved:"Merknad fjernet",annotationBodyUpdated:"Merknad oppdatert",jobEvent:"Jobbhendelse",justNow:"akkurat nå",minutesAgo:"{{count}}m siden",hoursAgo:"{{count}}t siden",daysAgo:"{{count}}d siden"},a={title:"Kommentarer",noComments:"Ingen kommentarer ennå. Velg tekst og klikk Kommenter for å legge til en.",commentPlaceholder:"Skriv kommentaren din her...",save:"Lagre",cancel:"Avbryt",edit:"Rediger",annotateComments:"Annotér kommentarer",instructions:"Instruksjoner",optional:"(valgfritt)",instructionsPlaceholder:"f.eks. Fokuser på teknisk terminologi...",annotate:"Annotér",annotating:"Annoterer...",toneLabel:"Tone",toneOptional:"(valgfritt)",toneScholarly:"Akademisk",toneExplanatory:"Forklarende",toneConversational:"Uformell",toneTechnical:"Teknisk",densityLabel:"Tetthet",densitySparse:"Sparsom",densityDense:"Tett",fragmentSelected:"Fragment valgt",imageRegionSelected:"Bildeområde valgt",closeProgress:"Lukk"},s={title:"Uthevinger",noHighlights:"Ingen uthevinger ennå. Bruk AI-annotering for å finne viktige passasjer.",annotateHighlights:"Annotér uthevinger",instructions:"Instruksjoner",optional:"(valgfritt)",instructionsPlaceholder:"f.eks. Fokuser på viktige tekniske begreper...",annotate:"Annotér",annotating:"Annoterer...",cancel:"Avbryt",densityLabel:"Tetthet",densitySparse:"Sparsom",densityDense:"Tett",closeProgress:"Lukk"},i={title:"Vurderinger",noAssessments:"Ingen vurderinger ennå. Bruk AI-annotering for å evaluere passasjer.",assessmentPlaceholder:"Skriv vurderingen din her...",save:"Lagre",cancel:"Avbryt",annotateAssessments:"Annotér vurderinger",instructions:"Instruksjoner",optional:"(valgfritt)",instructionsPlaceholder:"f.eks. Evaluer påstander for nøyaktighet og bevisgrunnlag...",annotate:"Annotér",annotating:"Annoterer...",toneLabel:"Tone",toneOptional:"(valgfritt)",toneAnalytical:"Analytisk",toneCritical:"Kritisk",toneBalanced:"Balansert",toneConstructive:"Konstruktiv",densityLabel:"Tetthet",densitySparse:"Sparsom",densityDense:"Tett",fragmentSelected:"Fragment valgt",imageRegionSelected:"Bildeområde valgt",closeProgress:"Lukk"},o={title:"Merker",noTags:"Ingen merker ennå. Bruk AI-annotering for å identifisere strukturelle roller.",annotateTags:"Annotér merker",selectSchema:"Velg rammeverk",schemaLegal:"Juridisk analyse (IRAC)",schemaScientific:"Vitenskapelig artikkel (IMRAD)",schemaArgument:"Argumentstruktur (Toulmin)",selectCategories:"Velg kategorier",categoryIssue:"Problem",categoryRule:"Regel",categoryApplication:"Anvendelse",categoryConclusion:"Konklusjon",categoryIntroduction:"Introduksjon",categoryMethods:"Metoder",categoryResults:"Resultater",categoryDiscussion:"Diskusjon",categoryClaim:"Påstand",categoryEvidence:"Bevis",categoryWarrant:"Begrunnelse",categoryCounterargument:"Motargument",categoryRebuttal:"Tilbakevisning",annotate:"Annotér",annotating:"Annoterer...",cancel:"Avbryt",selectAll:"Velg alle",deselectAll:"Fjern alle valg",categoriesSelected:"{count, plural, =0 {Ingen kategorier valgt} =1 {1 kategori valgt} other {# kategorier valgt}}",createTagForSelection:"Opprett merke for utvalg",selectCategory:"Velg kategori",chooseCategory:"Velg en kategori...",fragmentSelected:"Fragment valgt",imageRegionSelected:"Bildeområde valgt"},l={title:"Merknader",statistics:"Statistikk",highlight:"Uthevinger",reference:"Referanser",assessment:"Vurderinger",comment:"Kommentarer",tag:"Merker"},g={title:"Statistikk",highlights:"Uthevinger",comments:"Kommentarer",assessments:"Vurderinger",tags:"Merker",references:"Referanser",stub:"Stub",resolved:"Løst",entityTypes:"Entitetstyper"},d={title:"Referanser",noReferences:"Ingen referanser ennå. Velg tekst for å opprette referanser til andre ressurser.",outgoingReferences:"Utgående referanser",incomingReferences:"Innkommende referanser",noIncomingReferences:"Ingen innkommende referanser",stub:"Stubreferanse (ikke koblet)",resolved:"Løst referanse (koblet)",open:"Åpne",unlink:"Fjern kobling",resolve:"Løs referanse",cancel:"Avbryt",createReference:"Opprett referanse",entityTypesOptional:"Entitetstyper (valgfritt)",fragmentSelected:"Fragment valgt",imageRegionSelected:"Bildeområde valgt",annotateReferences:"Annotér referanser",selectEntityTypes:"Entitetstyper:",select:"Velg",deselect:"Fjern valg",noEntityTypes:"Ingen entitetstyper tilgjengelig",typesSelected:"{count, plural, =1 {1 type valgt} other {# typer valgt}}",annotate:"Annotér",annotating:"Annoterer...",includeDescriptiveReferences:"Inkluder beskrivende referanser",descriptiveReferencesTooltip:"Finn også fraser som 'administrerende direktør', 'teknologigiganten', 'fysikeren' (i tillegg til navn)",annotationProgressTitle:"Annoterer entitetsreferanser",cancelAnnotation:"Avbryt annotering",found:"{{count}} funnet",complete:"Annotering fullført!",failed:"Annotering mislyktes",current:"Nåværende: {{entityType}}",closeProgress:"Lukk",loading:"laster...",loadingEllipsis:"Laster...",untitledResource:"Ressurs uten tittel",noText:"Ingen tekst"},k={title:"Tastatursnarveier",closeDialog:"Lukk dialog",or:"eller",navigationTitle:"Navigasjon",navOpenSearch:"Åpne globalt søk",navOpenSearchAlt:"Åpne globalt søk (alternativ)",navCreateResource:"Opprett ny ressurs",navCloseOverlays:"Lukk alle overlegg (dobbelttrykk)",navShowHelp:"Vis hjelp for tastatursnarveier",sidebarTitle:"Kunnskapssidefelt",sidebarCollapse:"Skjul sidefelt",sidebarExpand:"Vis sidefelt",sidebarPickup:"Plukk opp ressursfane (når fokusert)",sidebarMove:"Flytt ressursfane (når du drar)",sidebarDrop:"Slipp ressursfane (når du drar)",sidebarCancel:"Avbryt dra-operasjon",annotationsTitle:"Ressursmerknader",annotHighlight:"Opprett utheving fra merknad (direkte)",annotReference:"Åpne referansepopup for merknad",annotDelete:"Slett fokusert merknad",annotNavigate:"Naviger gjennom merknader",annotNavigateBack:"Naviger merknader bakover",listsTitle:"Lister og rutenett",listsFilterNav:"Naviger entitetstypefiltre",listsGridNav:"Naviger ressursrutenett",listsJumpFirst:"Hopp til første element",listsJumpLast:"Hopp til siste element",searchModalTitle:"I søkemodal",searchNav:"Naviger søkeresultater",searchSelect:"Velg resultat",searchClose:"Lukk søk",modalTitle:"Modalkontroller",modalClose:"Lukk aktiv modal",modalNavForward:"Naviger fremover gjennom knapper",modalNavBackward:"Naviger bakover gjennom knapper",modalActivate:"Aktiver fokusert knapp",accessibilityTitle:"Tilgjengelighet",a11ySkipLinks:"Naviger til hurtiglenker (når øverst på siden)",a11yFollowLink:"Følg hurtiglenke",macNote:"Bruker Mac-tastatursnarveier. ⌘ er Command-tasten.",windowsNote:"Bruker Windows/Linux-tastatursnarveier. Ctrl er Control-tasten.",footerHint:"Trykk {{key}} når som helst for å vise denne hjelpen",close:"Lukk"},u={modeGroup:"Modus",browse:"Bla",annotate:"Annotér",selectionGroup:"Motivasjon",clickGroup:"Klikk",shapeGroup:"Form",none:"Ingen",linking:"Referanse",highlighting:"Utheving",assessing:"Vurder",commenting:"Kommenter",tagging:"Merk",detail:"Detalj",follow:"Følg",deleting:"Slett",jsonld:"JSON-LD",rectangle:"Rektangel",circle:"Sirkel",polygon:"Polygon"},c={title:"Navigasjon",collapseSidebar:"Skjul sidefelt",expandSidebar:"Vis sidefelt",dragToReorder:"Dra for å omorganisere",dragToReorderDoc:"Dra for å omorganisere {{name}}",closeResource:"Lukk ressurs",dragInstructions:"For å omorganisere ressurser: Bruk Tab for å navigere til en ressurs. Trykk Alt+Pil opp for å flytte opp eller Alt+Pil ned for å flytte ned. For dra og slipp: Trykk mellomromstasten for å plukke opp elementet. Bruk piltastene for å flytte det. Trykk mellomromstasten igjen for å slippe."},m={deleteConfirmationTitle:"Slett merknad",deleteConfirmationMessage:"Er du sikker på at du vil slette denne merknaden? Denne handlingen kan ikke angres.",deleteConfirmationCancel:"Avbryt",deleteConfirmationDelete:"Slett"},v={title:"Innstillinger",lineNumbers:"Linjenumre",lineNumbersVisible:"Synlig",lineNumbersHidden:"Skjult",theme:"Tema",themeLight:"Lyst",themeDark:"Mørkt",themeSystem:"System",themeSystemActive:"System ({{mode}})",themeModeActive:"Bruker {{mode}}-modus",language:"Språk",languageHint:"Endre språk i hovednavigasjonen",languageChanging:"Endrer språk...",hoverDelay:"Pekerforsinkelse",hoverDelayFast:"Rask",hoverDelaySlow:"Langsom",hoverDelayDescription:"{{delay}}ms forsinkelse før pekereffekter vises"},p={},f={gatherTitle:"Samlet kontekst",configureGenerationTitle:"Konfigurer generering",configureSearchTitle:"Konfigurer søk",searchResultsTitle:"Søkeresultater",sourceContextLabel:"Annotasjonskontekst i ressurs",connectionsLabel:"Jevnaldrende annotasjoner",citedByLabel:"Ressurs sitert av",userHintLabel:"Hint",userHintPlaceholder:"Beskriv hva denne kommentaren refererer til...",loadingContext:"Samler kontekst...",failedContext:"Kunne ikke samle kontekst",cancel:"Avbryt",generate:"Generer",compose:"Komponer",resolutionStrategyLabel:"Løsningsstrategi",back:"Tilbake",link:"Lenke",score:"Poengsum",noResults:"Ingen resultater funnet",resourceTitle:"Ressurstitel",resourceTitlePlaceholder:"Skriv inn ressurstitel...",additionalInstructions:"Tilleggsinstruksjoner",additionalInstructionsPlaceholder:"Skriv inn tilleggsinstruksjoner...",language:"Språk",languageHelp:"Språk for generert innhold",creativity:"Kreativitet",creativityFocused:"Fokusert",creativityCreative:"Kreativ",maxLength:"Maks. lengde",maxLengthHelp:"Maksimalt antall tokener",maxResults:"Maks. resultater",semanticScoring:"Semantisk skåring",semanticScoringHelp:"Bruk AI til å score resultater etter semantisk relevans",searching:"Søker...",search:"Søk"},y={embeddingComputed:"Embedding beregnet"},h={Toolbar:e,ResourceInfoPanel:t,CollaborationPanel:n,AnnotationHistory:r,CommentsPanel:a,HighlightPanel:s,AssessmentPanel:i,TaggingPanel:o,UnifiedAnnotationsPanel:l,StatisticsPanel:g,ReferencesPanel:d,KeyboardShortcuts:k,AnnotateToolbar:u,CollapsibleResourceNavigation:c,ResourceViewer:m,Settings:v,AnnotateView:p,ReferenceWizard:f,History:y};export{u as AnnotateToolbar,p as AnnotateView,r as AnnotationHistory,i as AssessmentPanel,n as CollaborationPanel,c as CollapsibleResourceNavigation,a as CommentsPanel,s as HighlightPanel,y as History,k as KeyboardShortcuts,f as ReferenceWizard,d as ReferencesPanel,t as ResourceInfoPanel,m as ResourceViewer,v as Settings,g as StatisticsPanel,o as TaggingPanel,e as Toolbar,l as UnifiedAnnotationsPanel,h as default};
2
+ //# sourceMappingURL=no-MF6F352I-Wf2ZNjHx.js.map