@semiont/cli 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/dist/cli.mjs +10 -11
  2. package/dist/frontend/dist/assets/ArrowsRightLeftIcon-eQUXtsyS.js +2 -0
  3. package/dist/frontend/dist/assets/ArrowsRightLeftIcon-eQUXtsyS.js.map +1 -0
  4. package/dist/frontend/dist/assets/ChevronLeftIcon-QLs1eT1j.js +2 -0
  5. package/dist/frontend/dist/assets/ChevronLeftIcon-QLs1eT1j.js.map +1 -0
  6. package/dist/frontend/dist/assets/CommandLineIcon-BEeeWFhQ.js +2 -0
  7. package/dist/frontend/dist/assets/CommandLineIcon-BEeeWFhQ.js.map +1 -0
  8. package/dist/frontend/dist/assets/CookiePreferences-CMgprW9V.js +2 -0
  9. package/dist/frontend/dist/assets/CookiePreferences-CMgprW9V.js.map +1 -0
  10. package/dist/frontend/dist/assets/KeyboardShortcutsContext-BRLeqQUj.js +2 -0
  11. package/dist/frontend/dist/assets/KeyboardShortcutsContext-BRLeqQUj.js.map +1 -0
  12. package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-CN3C3S55-DsCya3j0.js +2 -0
  13. package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-CN3C3S55-DsCya3j0.js.map +1 -0
  14. package/dist/frontend/dist/assets/ToolbarPanels-CRGQDX-L.js +2 -0
  15. package/dist/frontend/dist/assets/ToolbarPanels-CRGQDX-L.js.map +1 -0
  16. package/dist/frontend/dist/assets/XMarkIcon-CddZGiiz.js +2 -0
  17. package/dist/frontend/dist/assets/XMarkIcon-CddZGiiz.js.map +1 -0
  18. package/dist/frontend/dist/assets/ar-U2EXWUMQ-Ds9Pt3_I.js +2 -0
  19. package/dist/frontend/dist/assets/ar-U2EXWUMQ-Ds9Pt3_I.js.map +1 -0
  20. package/dist/frontend/dist/assets/bn-DRJGV772-BUYrNEk8.js +2 -0
  21. package/dist/frontend/dist/assets/bn-DRJGV772-BUYrNEk8.js.map +1 -0
  22. package/dist/frontend/dist/assets/chunk-GERSK2DY-D2Q8aVeK.js +2 -0
  23. package/dist/frontend/dist/assets/chunk-GERSK2DY-D2Q8aVeK.js.map +1 -0
  24. package/dist/frontend/dist/assets/chunk-K6BJDL2I-CcwOtHVB.js +2 -0
  25. package/dist/frontend/dist/assets/chunk-K6BJDL2I-CcwOtHVB.js.map +1 -0
  26. package/dist/frontend/dist/assets/client-DkMJxPA7.js +2 -0
  27. package/dist/frontend/dist/assets/client-DkMJxPA7.js.map +1 -0
  28. package/dist/frontend/dist/assets/client-DvALJ3DL.js +2 -0
  29. package/dist/frontend/dist/assets/client-DvALJ3DL.js.map +1 -0
  30. package/dist/frontend/dist/assets/client-DxlEW_QJ.js +2 -0
  31. package/dist/frontend/dist/assets/client-DxlEW_QJ.js.map +1 -0
  32. package/dist/frontend/dist/assets/client-uEoQ8iJO.js +2 -0
  33. package/dist/frontend/dist/assets/client-uEoQ8iJO.js.map +1 -0
  34. package/dist/frontend/dist/assets/cs-PTWDM23V-DfbMzFEw.js +2 -0
  35. package/dist/frontend/dist/assets/cs-PTWDM23V-DfbMzFEw.js.map +1 -0
  36. package/dist/frontend/dist/assets/da-KSNIKYSS-BMtq201F.js +2 -0
  37. package/dist/frontend/dist/assets/da-KSNIKYSS-BMtq201F.js.map +1 -0
  38. package/dist/frontend/dist/assets/de-F2XBEWFY-ChjoYEH0.js +2 -0
  39. package/dist/frontend/dist/assets/de-F2XBEWFY-ChjoYEH0.js.map +1 -0
  40. package/dist/frontend/dist/assets/el-DLD2GWAP-ClFunpNV.js +2 -0
  41. package/dist/frontend/dist/assets/el-DLD2GWAP-ClFunpNV.js.map +1 -0
  42. package/dist/frontend/dist/assets/en-L45VK7BS-C9ArL-E1.js +1 -0
  43. package/dist/frontend/dist/assets/es-WLPYWGB5-C53vYarX.js +2 -0
  44. package/dist/frontend/dist/assets/es-WLPYWGB5-C53vYarX.js.map +1 -0
  45. package/dist/frontend/dist/assets/fa-BAXHSDZG-DJia4XF_.js +2 -0
  46. package/dist/frontend/dist/assets/fa-BAXHSDZG-DJia4XF_.js.map +1 -0
  47. package/dist/frontend/dist/assets/fi-FCHSYVOT-D2etzjyC.js +2 -0
  48. package/dist/frontend/dist/assets/fi-FCHSYVOT-D2etzjyC.js.map +1 -0
  49. package/dist/frontend/dist/assets/fr-3UERBSL6-Bi8o9u26.js +2 -0
  50. package/dist/frontend/dist/assets/fr-3UERBSL6-Bi8o9u26.js.map +1 -0
  51. package/dist/frontend/dist/assets/he-F6F3FV2K-CwGkucCK.js +2 -0
  52. package/dist/frontend/dist/assets/he-F6F3FV2K-CwGkucCK.js.map +1 -0
  53. package/dist/frontend/dist/assets/hi-4BK6IK7Q-fsSpyO-Z.js +2 -0
  54. package/dist/frontend/dist/assets/hi-4BK6IK7Q-fsSpyO-Z.js.map +1 -0
  55. package/dist/frontend/dist/assets/i18n-B53Yefbh.js +2 -0
  56. package/dist/frontend/dist/assets/i18n-B53Yefbh.js.map +1 -0
  57. package/dist/frontend/dist/assets/id-7ECCWP3J-MhvUbYNG.js +2 -0
  58. package/dist/frontend/dist/assets/id-7ECCWP3J-MhvUbYNG.js.map +1 -0
  59. package/dist/frontend/dist/assets/index-95t-6XJg.css +1 -0
  60. package/dist/frontend/dist/assets/index-DjtRDlfn.js +141 -0
  61. package/dist/frontend/dist/assets/index-DjtRDlfn.js.map +1 -0
  62. package/dist/frontend/dist/assets/it-234Z6XK6-n-8MkFtz.js +2 -0
  63. package/dist/frontend/dist/assets/it-234Z6XK6-n-8MkFtz.js.map +1 -0
  64. package/dist/frontend/dist/assets/ja-PJWQI4OQ-CbrcVSYZ.js +2 -0
  65. package/dist/frontend/dist/assets/ja-PJWQI4OQ-CbrcVSYZ.js.map +1 -0
  66. package/dist/frontend/dist/assets/ko-APUEW2RS-CLubHAbf.js +2 -0
  67. package/dist/frontend/dist/assets/ko-APUEW2RS-CLubHAbf.js.map +1 -0
  68. package/dist/frontend/dist/assets/layout-BhnmJA6O.js +2 -0
  69. package/dist/frontend/dist/assets/layout-BhnmJA6O.js.map +1 -0
  70. package/dist/frontend/dist/assets/layout-DolG9tOf.js +2 -0
  71. package/dist/frontend/dist/assets/layout-DolG9tOf.js.map +1 -0
  72. package/dist/frontend/dist/assets/layout-e6QyrD0Y.js +2 -0
  73. package/dist/frontend/dist/assets/layout-e6QyrD0Y.js.map +1 -0
  74. package/dist/frontend/dist/assets/layout-xDEqzpvE.js +2 -0
  75. package/dist/frontend/dist/assets/layout-xDEqzpvE.js.map +1 -0
  76. package/dist/frontend/dist/assets/ms-PJBZWZWD-Bu45eJYe.js +2 -0
  77. package/dist/frontend/dist/assets/ms-PJBZWZWD-Bu45eJYe.js.map +1 -0
  78. package/dist/frontend/dist/assets/nl-L4C3ZBCU-bLU3oN_N.js +2 -0
  79. package/dist/frontend/dist/assets/nl-L4C3ZBCU-bLU3oN_N.js.map +1 -0
  80. package/dist/frontend/dist/assets/no-QE5N5KNG-BCG75Nm1.js +2 -0
  81. package/dist/frontend/dist/assets/no-QE5N5KNG-BCG75Nm1.js.map +1 -0
  82. package/dist/frontend/dist/assets/not-found-4iuCkpA7.js +2 -0
  83. package/dist/frontend/dist/assets/not-found-4iuCkpA7.js.map +1 -0
  84. package/dist/frontend/dist/assets/page-6YupxiP8.js +8 -0
  85. package/dist/frontend/dist/assets/page-6YupxiP8.js.map +1 -0
  86. package/dist/frontend/dist/assets/page-7cCGgkUd.js +2 -0
  87. package/dist/frontend/dist/assets/page-7cCGgkUd.js.map +1 -0
  88. package/dist/frontend/dist/assets/page-8sXDEos5.js +2 -0
  89. package/dist/frontend/dist/assets/page-8sXDEos5.js.map +1 -0
  90. package/dist/frontend/dist/assets/page-A6_MoyUb2.js +5 -0
  91. package/dist/frontend/dist/assets/page-A6_MoyUb2.js.map +1 -0
  92. package/dist/frontend/dist/assets/page-B9EYfbrY.js +2 -0
  93. package/dist/frontend/dist/assets/page-B9EYfbrY.js.map +1 -0
  94. package/dist/frontend/dist/assets/page-BOhOKDMk.js +2 -0
  95. package/dist/frontend/dist/assets/page-BOhOKDMk.js.map +1 -0
  96. package/dist/frontend/dist/assets/page-BioSV21A.js +2 -0
  97. package/dist/frontend/dist/assets/page-BioSV21A.js.map +1 -0
  98. package/dist/frontend/dist/assets/page-Bl8sZu8k.js +2 -0
  99. package/dist/frontend/dist/assets/page-Bl8sZu8k.js.map +1 -0
  100. package/dist/frontend/dist/assets/page-BrSlkHj9.js +2 -0
  101. package/dist/frontend/dist/assets/page-BrSlkHj9.js.map +1 -0
  102. package/dist/frontend/dist/assets/page-C5gTlI4M.js +2 -0
  103. package/dist/frontend/dist/assets/page-C5gTlI4M.js.map +1 -0
  104. package/dist/frontend/dist/assets/page-CXVPWK3i.js +20 -0
  105. package/dist/frontend/dist/assets/page-CXVPWK3i.js.map +1 -0
  106. package/dist/frontend/dist/assets/page-CXhfUrZM.js +2 -0
  107. package/dist/frontend/dist/assets/page-CXhfUrZM.js.map +1 -0
  108. package/dist/frontend/dist/assets/page-CkHE2rPM.js +2 -0
  109. package/dist/frontend/dist/assets/page-CkHE2rPM.js.map +1 -0
  110. package/dist/frontend/dist/assets/page-D0bYoQZI.js +2 -0
  111. package/dist/frontend/dist/assets/page-D0bYoQZI.js.map +1 -0
  112. package/dist/frontend/dist/assets/page-D1veR3Kp.js +2 -0
  113. package/dist/frontend/dist/assets/page-D1veR3Kp.js.map +1 -0
  114. package/dist/frontend/dist/assets/page-D6oe9LkY.js +2 -0
  115. package/dist/frontend/dist/assets/page-D6oe9LkY.js.map +1 -0
  116. package/dist/frontend/dist/assets/page-DVCVvH_S.js +2 -0
  117. package/dist/frontend/dist/assets/page-DVCVvH_S.js.map +1 -0
  118. package/dist/frontend/dist/assets/page-DbwiMF1N.js +2 -0
  119. package/dist/frontend/dist/assets/page-DbwiMF1N.js.map +1 -0
  120. package/dist/frontend/dist/assets/pl-5Q2D23PD-DgP2517z.js +2 -0
  121. package/dist/frontend/dist/assets/pl-5Q2D23PD-DgP2517z.js.map +1 -0
  122. package/dist/frontend/dist/assets/pt-AIGUOIOC-CN21pR38.js +2 -0
  123. package/dist/frontend/dist/assets/pt-AIGUOIOC-CN21pR38.js.map +1 -0
  124. package/dist/frontend/dist/assets/ro-T56CSHTY-mCdsn9QL.js +2 -0
  125. package/dist/frontend/dist/assets/ro-T56CSHTY-mCdsn9QL.js.map +1 -0
  126. package/dist/frontend/dist/assets/rolldown-runtime-jpDsebLB.js +1 -0
  127. package/dist/frontend/dist/assets/routing-Bcj1FhkC.js +2 -0
  128. package/dist/frontend/dist/assets/routing-Bcj1FhkC.js.map +1 -0
  129. package/dist/frontend/dist/assets/routing-DW1ehi64.js +2 -0
  130. package/dist/frontend/dist/assets/routing-DW1ehi64.js.map +1 -0
  131. package/dist/frontend/dist/assets/sv-L4TJQ2UH-Cj1jmTXz.js +2 -0
  132. package/dist/frontend/dist/assets/sv-L4TJQ2UH-Cj1jmTXz.js.map +1 -0
  133. package/dist/frontend/dist/assets/th-6O7Y6O2Q-Db0HgJLY.js +2 -0
  134. package/dist/frontend/dist/assets/th-6O7Y6O2Q-Db0HgJLY.js.map +1 -0
  135. package/dist/frontend/dist/assets/tr-D4CQCSNO-B0u3f4nL.js +2 -0
  136. package/dist/frontend/dist/assets/tr-D4CQCSNO-B0u3f4nL.js.map +1 -0
  137. package/dist/frontend/dist/assets/uk-2HMQG6ND-Dx2FfvV4.js +2 -0
  138. package/dist/frontend/dist/assets/uk-2HMQG6ND-Dx2FfvV4.js.map +1 -0
  139. package/dist/frontend/dist/assets/vendor-0HjOURbh.js +10 -0
  140. package/dist/frontend/dist/assets/vendor-0HjOURbh.js.map +1 -0
  141. package/dist/frontend/dist/assets/vi-XVJ4RUEJ-CeoZ1h3m.js +2 -0
  142. package/dist/frontend/dist/assets/vi-XVJ4RUEJ-CeoZ1h3m.js.map +1 -0
  143. package/dist/frontend/dist/assets/web-Dr6mdA1A.js +2 -0
  144. package/dist/frontend/dist/assets/web-Dr6mdA1A.js.map +1 -0
  145. package/dist/frontend/dist/assets/zh-K2KDPGHK-BriluvPe.js +2 -0
  146. package/dist/frontend/dist/assets/zh-K2KDPGHK-BriluvPe.js.map +1 -0
  147. package/dist/frontend/dist/index.html +7 -4
  148. package/dist/frontend/dist/messages/ar.json +0 -3
  149. package/dist/frontend/dist/messages/bn.json +0 -3
  150. package/dist/frontend/dist/messages/cs.json +0 -3
  151. package/dist/frontend/dist/messages/da.json +0 -3
  152. package/dist/frontend/dist/messages/de.json +0 -3
  153. package/dist/frontend/dist/messages/el.json +0 -3
  154. package/dist/frontend/dist/messages/en.json +1 -4
  155. package/dist/frontend/dist/messages/es.json +0 -3
  156. package/dist/frontend/dist/messages/fa.json +0 -3
  157. package/dist/frontend/dist/messages/fi.json +0 -3
  158. package/dist/frontend/dist/messages/fr.json +0 -3
  159. package/dist/frontend/dist/messages/he.json +0 -3
  160. package/dist/frontend/dist/messages/hi.json +0 -3
  161. package/dist/frontend/dist/messages/id.json +0 -3
  162. package/dist/frontend/dist/messages/it.json +0 -3
  163. package/dist/frontend/dist/messages/ja.json +0 -3
  164. package/dist/frontend/dist/messages/ko.json +0 -3
  165. package/dist/frontend/dist/messages/ms.json +0 -3
  166. package/dist/frontend/dist/messages/nl.json +0 -3
  167. package/dist/frontend/dist/messages/no.json +0 -3
  168. package/dist/frontend/dist/messages/pl.json +0 -3
  169. package/dist/frontend/dist/messages/pt.json +0 -3
  170. package/dist/frontend/dist/messages/ro.json +0 -3
  171. package/dist/frontend/dist/messages/sv.json +0 -3
  172. package/dist/frontend/dist/messages/th.json +0 -3
  173. package/dist/frontend/dist/messages/tr.json +0 -3
  174. package/dist/frontend/dist/messages/uk.json +0 -3
  175. package/dist/frontend/dist/messages/vi.json +0 -3
  176. package/dist/frontend/dist/messages/zh.json +0 -3
  177. package/dist/frontend/package.json +1 -1
  178. package/dist/templates/package.json +1 -1
  179. package/package.json +9 -9
  180. package/dist/frontend/dist/assets/ArrowsRightLeftIcon-BzLgl5o9.js +0 -2
  181. package/dist/frontend/dist/assets/ArrowsRightLeftIcon-BzLgl5o9.js.map +0 -1
  182. package/dist/frontend/dist/assets/ChevronLeftIcon-BLyRNZuL.js +0 -2
  183. package/dist/frontend/dist/assets/ChevronLeftIcon-BLyRNZuL.js.map +0 -1
  184. package/dist/frontend/dist/assets/CommandLineIcon-Ba4gpk8e.js +0 -2
  185. package/dist/frontend/dist/assets/CommandLineIcon-Ba4gpk8e.js.map +0 -1
  186. package/dist/frontend/dist/assets/CookiePreferences-BizeRUGG.js +0 -2
  187. package/dist/frontend/dist/assets/CookiePreferences-BizeRUGG.js.map +0 -1
  188. package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js +0 -2
  189. package/dist/frontend/dist/assets/PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js.map +0 -1
  190. package/dist/frontend/dist/assets/ToolbarPanels-Cz2uv68j.js +0 -2
  191. package/dist/frontend/dist/assets/ToolbarPanels-Cz2uv68j.js.map +0 -1
  192. package/dist/frontend/dist/assets/XMarkIcon-KMKD47CF.js +0 -2
  193. package/dist/frontend/dist/assets/XMarkIcon-KMKD47CF.js.map +0 -1
  194. package/dist/frontend/dist/assets/ar-UUMMNQKF-xeh4Cwx2.js +0 -2
  195. package/dist/frontend/dist/assets/ar-UUMMNQKF-xeh4Cwx2.js.map +0 -1
  196. package/dist/frontend/dist/assets/bn-AL5BJSR3-Dz19S8vN.js +0 -2
  197. package/dist/frontend/dist/assets/bn-AL5BJSR3-Dz19S8vN.js.map +0 -1
  198. package/dist/frontend/dist/assets/browser-ponyfill-D2ngVqWO.js +0 -3
  199. package/dist/frontend/dist/assets/browser-ponyfill-D2ngVqWO.js.map +0 -1
  200. package/dist/frontend/dist/assets/client-BrB8xl9P.js +0 -2
  201. package/dist/frontend/dist/assets/client-BrB8xl9P.js.map +0 -1
  202. package/dist/frontend/dist/assets/client-C5p1ZZtM.js +0 -2
  203. package/dist/frontend/dist/assets/client-C5p1ZZtM.js.map +0 -1
  204. package/dist/frontend/dist/assets/client-D6q4B6bq.js +0 -2
  205. package/dist/frontend/dist/assets/client-D6q4B6bq.js.map +0 -1
  206. package/dist/frontend/dist/assets/client-SkLMw-j7.js +0 -2
  207. package/dist/frontend/dist/assets/client-SkLMw-j7.js.map +0 -1
  208. package/dist/frontend/dist/assets/cs-UMINALSU-HHT-dcWL.js +0 -2
  209. package/dist/frontend/dist/assets/cs-UMINALSU-HHT-dcWL.js.map +0 -1
  210. package/dist/frontend/dist/assets/da-FKUX6CDL-BpdJ67RW.js +0 -2
  211. package/dist/frontend/dist/assets/da-FKUX6CDL-BpdJ67RW.js.map +0 -1
  212. package/dist/frontend/dist/assets/de-XSJ3E25S-DJ6EvHYY.js +0 -2
  213. package/dist/frontend/dist/assets/de-XSJ3E25S-DJ6EvHYY.js.map +0 -1
  214. package/dist/frontend/dist/assets/el-UJXNRCBP-DhRdKHlx.js +0 -2
  215. package/dist/frontend/dist/assets/el-UJXNRCBP-DhRdKHlx.js.map +0 -1
  216. package/dist/frontend/dist/assets/es-VURP62BU-CgnB380t.js +0 -2
  217. package/dist/frontend/dist/assets/es-VURP62BU-CgnB380t.js.map +0 -1
  218. package/dist/frontend/dist/assets/fa-TIT5ZPZY-D28qBiUW.js +0 -2
  219. package/dist/frontend/dist/assets/fa-TIT5ZPZY-D28qBiUW.js.map +0 -1
  220. package/dist/frontend/dist/assets/fi-F7VTGT4H-BeG0kw0Q.js +0 -2
  221. package/dist/frontend/dist/assets/fi-F7VTGT4H-BeG0kw0Q.js.map +0 -1
  222. package/dist/frontend/dist/assets/fr-2ZR26VF7-BwamaA96.js +0 -2
  223. package/dist/frontend/dist/assets/fr-2ZR26VF7-BwamaA96.js.map +0 -1
  224. package/dist/frontend/dist/assets/he-BXP2KYVZ-DuKmwNm_.js +0 -2
  225. package/dist/frontend/dist/assets/he-BXP2KYVZ-DuKmwNm_.js.map +0 -1
  226. package/dist/frontend/dist/assets/hi-PSWTP3NC-B7v6ttqy.js +0 -2
  227. package/dist/frontend/dist/assets/hi-PSWTP3NC-B7v6ttqy.js.map +0 -1
  228. package/dist/frontend/dist/assets/i18n-BbpF47i1.js +0 -2
  229. package/dist/frontend/dist/assets/i18n-BbpF47i1.js.map +0 -1
  230. package/dist/frontend/dist/assets/id-HO6TXGTO-Dj1JW3-q.js +0 -2
  231. package/dist/frontend/dist/assets/id-HO6TXGTO-Dj1JW3-q.js.map +0 -1
  232. package/dist/frontend/dist/assets/index-Dg-Pampr.css +0 -1
  233. package/dist/frontend/dist/assets/index-QjYSiWWG.js +0 -169
  234. package/dist/frontend/dist/assets/index-QjYSiWWG.js.map +0 -1
  235. package/dist/frontend/dist/assets/it-AGTDMBL3-Bq_I1CA1.js +0 -2
  236. package/dist/frontend/dist/assets/it-AGTDMBL3-Bq_I1CA1.js.map +0 -1
  237. package/dist/frontend/dist/assets/ja-TTGOVF5K-CkAQueln.js +0 -2
  238. package/dist/frontend/dist/assets/ja-TTGOVF5K-CkAQueln.js.map +0 -1
  239. package/dist/frontend/dist/assets/ko-FF77IQ7N-fJgs5Roz.js +0 -2
  240. package/dist/frontend/dist/assets/ko-FF77IQ7N-fJgs5Roz.js.map +0 -1
  241. package/dist/frontend/dist/assets/layout-BO_gP65g.js +0 -2
  242. package/dist/frontend/dist/assets/layout-BO_gP65g.js.map +0 -1
  243. package/dist/frontend/dist/assets/layout-C-P8uUyx.js +0 -2
  244. package/dist/frontend/dist/assets/layout-C-P8uUyx.js.map +0 -1
  245. package/dist/frontend/dist/assets/layout-C7qxASOF.js +0 -2
  246. package/dist/frontend/dist/assets/layout-C7qxASOF.js.map +0 -1
  247. package/dist/frontend/dist/assets/layout-DVrTweI_.js +0 -2
  248. package/dist/frontend/dist/assets/layout-DVrTweI_.js.map +0 -1
  249. package/dist/frontend/dist/assets/ms-UPQWWIL4-DEDFniGv.js +0 -2
  250. package/dist/frontend/dist/assets/ms-UPQWWIL4-DEDFniGv.js.map +0 -1
  251. package/dist/frontend/dist/assets/nl-W75HEPFL-D2_VQYac.js +0 -2
  252. package/dist/frontend/dist/assets/nl-W75HEPFL-D2_VQYac.js.map +0 -1
  253. package/dist/frontend/dist/assets/no-R4W7W7ZU-Duk86nrT.js +0 -2
  254. package/dist/frontend/dist/assets/no-R4W7W7ZU-Duk86nrT.js.map +0 -1
  255. package/dist/frontend/dist/assets/not-found-CVsHHn2n.js +0 -2
  256. package/dist/frontend/dist/assets/not-found-CVsHHn2n.js.map +0 -1
  257. package/dist/frontend/dist/assets/page-3CgxsYbh.js +0 -2
  258. package/dist/frontend/dist/assets/page-3CgxsYbh.js.map +0 -1
  259. package/dist/frontend/dist/assets/page-8S-MQzsq.js +0 -2
  260. package/dist/frontend/dist/assets/page-8S-MQzsq.js.map +0 -1
  261. package/dist/frontend/dist/assets/page-B-leMN2k.js +0 -2
  262. package/dist/frontend/dist/assets/page-B-leMN2k.js.map +0 -1
  263. package/dist/frontend/dist/assets/page-B5Dz_Nh-.js +0 -2
  264. package/dist/frontend/dist/assets/page-B5Dz_Nh-.js.map +0 -1
  265. package/dist/frontend/dist/assets/page-BfKm2iQ2.js +0 -2
  266. package/dist/frontend/dist/assets/page-BfKm2iQ2.js.map +0 -1
  267. package/dist/frontend/dist/assets/page-Br5SeiDL.js +0 -2
  268. package/dist/frontend/dist/assets/page-Br5SeiDL.js.map +0 -1
  269. package/dist/frontend/dist/assets/page-C6_MlYjr.js +0 -2
  270. package/dist/frontend/dist/assets/page-C6_MlYjr.js.map +0 -1
  271. package/dist/frontend/dist/assets/page-CXE3Zhkq.js +0 -2
  272. package/dist/frontend/dist/assets/page-CXE3Zhkq.js.map +0 -1
  273. package/dist/frontend/dist/assets/page-Cg1IhnH2.js +0 -2
  274. package/dist/frontend/dist/assets/page-Cg1IhnH2.js.map +0 -1
  275. package/dist/frontend/dist/assets/page-CqV1yD4w.js +0 -2
  276. package/dist/frontend/dist/assets/page-CqV1yD4w.js.map +0 -1
  277. package/dist/frontend/dist/assets/page-D6saO7D3.js +0 -2
  278. package/dist/frontend/dist/assets/page-D6saO7D3.js.map +0 -1
  279. package/dist/frontend/dist/assets/page-D7ZN9Yo5.js +0 -2
  280. package/dist/frontend/dist/assets/page-D7ZN9Yo5.js.map +0 -1
  281. package/dist/frontend/dist/assets/page-DaL8x94G.js +0 -2
  282. package/dist/frontend/dist/assets/page-DaL8x94G.js.map +0 -1
  283. package/dist/frontend/dist/assets/page-Dj5UZ_d6.js +0 -5
  284. package/dist/frontend/dist/assets/page-Dj5UZ_d6.js.map +0 -1
  285. package/dist/frontend/dist/assets/page-DyGU2n2w.js +0 -2
  286. package/dist/frontend/dist/assets/page-DyGU2n2w.js.map +0 -1
  287. package/dist/frontend/dist/assets/page-E4A7Vkwl.js +0 -8
  288. package/dist/frontend/dist/assets/page-E4A7Vkwl.js.map +0 -1
  289. package/dist/frontend/dist/assets/page-OFxNMOoF.js +0 -20
  290. package/dist/frontend/dist/assets/page-OFxNMOoF.js.map +0 -1
  291. package/dist/frontend/dist/assets/page-RRMlL_4-.js +0 -2
  292. package/dist/frontend/dist/assets/page-RRMlL_4-.js.map +0 -1
  293. package/dist/frontend/dist/assets/pl-GQC2ELWO-CYs9xZGI.js +0 -2
  294. package/dist/frontend/dist/assets/pl-GQC2ELWO-CYs9xZGI.js.map +0 -1
  295. package/dist/frontend/dist/assets/privacy-Rbj4Ycw9.js +0 -2
  296. package/dist/frontend/dist/assets/privacy-Rbj4Ycw9.js.map +0 -1
  297. package/dist/frontend/dist/assets/pt-YGVT62RU-pnVyr-_6.js +0 -2
  298. package/dist/frontend/dist/assets/pt-YGVT62RU-pnVyr-_6.js.map +0 -1
  299. package/dist/frontend/dist/assets/ro-TST6XS6X-CRozzX2s.js +0 -2
  300. package/dist/frontend/dist/assets/ro-TST6XS6X-CRozzX2s.js.map +0 -1
  301. package/dist/frontend/dist/assets/routing-CUnWbO2L.js +0 -2
  302. package/dist/frontend/dist/assets/routing-CUnWbO2L.js.map +0 -1
  303. package/dist/frontend/dist/assets/routing-CxPkffyg.js +0 -2
  304. package/dist/frontend/dist/assets/routing-CxPkffyg.js.map +0 -1
  305. package/dist/frontend/dist/assets/sv-TQLF6HV7-DNDzEE6l.js +0 -2
  306. package/dist/frontend/dist/assets/sv-TQLF6HV7-DNDzEE6l.js.map +0 -1
  307. package/dist/frontend/dist/assets/th-HJUIETVR-C8TRIJwR.js +0 -2
  308. package/dist/frontend/dist/assets/th-HJUIETVR-C8TRIJwR.js.map +0 -1
  309. package/dist/frontend/dist/assets/tr-CW3C46TW-wpHSGdDw.js +0 -2
  310. package/dist/frontend/dist/assets/tr-CW3C46TW-wpHSGdDw.js.map +0 -1
  311. package/dist/frontend/dist/assets/uk-WTHZQB2U-3kAkt5-3.js +0 -2
  312. package/dist/frontend/dist/assets/uk-WTHZQB2U-3kAkt5-3.js.map +0 -1
  313. package/dist/frontend/dist/assets/vendor-DJo4KD8w.js +0 -29
  314. package/dist/frontend/dist/assets/vendor-DJo4KD8w.js.map +0 -1
  315. package/dist/frontend/dist/assets/vi-PHWHJLKP-DYHi4xUC.js +0 -2
  316. package/dist/frontend/dist/assets/vi-PHWHJLKP-DYHi4xUC.js.map +0 -1
  317. package/dist/frontend/dist/assets/web-C8yeWrxL.js +0 -2
  318. package/dist/frontend/dist/assets/web-C8yeWrxL.js.map +0 -1
  319. package/dist/frontend/dist/assets/zh-MO3FCUD6-CLkb7wBO.js +0 -2
  320. package/dist/frontend/dist/assets/zh-MO3FCUD6-CLkb7wBO.js.map +0 -1
@@ -25,10 +25,8 @@
25
25
  "provenance": "Походження",
26
26
  "createdAt": "Створено",
27
27
  "modifiedAt": "Змінено",
28
- "creationMethod": "Спосіб створення",
29
28
  "attributedTo": "Авторство",
30
29
  "derivedFrom": "Походить від",
31
- "generatedBy": "Створено за допомогою",
32
30
  "storageUri": "Сховище"
33
31
  },
34
32
  "CollaborationPanel": {
@@ -54,7 +52,6 @@
54
52
  "history": "Історія",
55
53
  "loading": "Завантаження...",
56
54
  "user": "Користувач",
57
- "method": "Метод",
58
55
  "viewOriginal": "Переглянути оригінал",
59
56
  "viewAnnotation": "Переглянути анотацію: {{content}}",
60
57
  "resourceCreated": "Ресурс створено",
@@ -25,10 +25,8 @@
25
25
  "provenance": "Xuất xứ",
26
26
  "createdAt": "Ngày tạo",
27
27
  "modifiedAt": "Ngày sửa đổi",
28
- "creationMethod": "Cách tạo",
29
28
  "attributedTo": "Được gán cho",
30
29
  "derivedFrom": "Bắt nguồn từ",
31
- "generatedBy": "Được tạo bởi",
32
30
  "storageUri": "Lưu trữ"
33
31
  },
34
32
  "CollaborationPanel": {
@@ -54,7 +52,6 @@
54
52
  "history": "Lịch sử",
55
53
  "loading": "Đang tải...",
56
54
  "user": "Người dùng",
57
- "method": "Phương thức",
58
55
  "viewOriginal": "Xem bản gốc",
59
56
  "viewAnnotation": "Xem chú thích: {{content}}",
60
57
  "resourceCreated": "Đã tạo tài nguyên",
@@ -25,10 +25,8 @@
25
25
  "provenance": "来源",
26
26
  "createdAt": "创建时间",
27
27
  "modifiedAt": "修改时间",
28
- "creationMethod": "创建方式",
29
28
  "attributedTo": "归属于",
30
29
  "derivedFrom": "派生自",
31
- "generatedBy": "由…生成",
32
30
  "storageUri": "存储"
33
31
  },
34
32
  "CollaborationPanel": {
@@ -54,7 +52,6 @@
54
52
  "history": "历史",
55
53
  "loading": "加载中...",
56
54
  "user": "用户",
57
- "method": "方法",
58
55
  "viewOriginal": "查看原文",
59
56
  "viewAnnotation": "查看注释:{{content}}",
60
57
  "resourceCreated": "已创建资源",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semiont/frontend",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "Semiont frontend - pre-built Vite SPA with static file server",
5
5
  "main": "server.js",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "@types/node": "^20.0.0",
15
15
  "aws-cdk": "^2.212.0",
16
16
  "ts-node": "^10.9.1",
17
- "typescript": "^5.0.0"
17
+ "typescript": "^6.0.2"
18
18
  },
19
19
  "dependencies": {
20
20
  "aws-cdk-lib": "^2.212.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semiont/cli",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "Semiont CLI - Unified environment management tool",
5
5
  "_comment": "AWS SDK dependencies (@aws-sdk/*) are only used by platforms/aws",
6
6
  "type": "module",
@@ -47,13 +47,13 @@
47
47
  "test:watch:unit": "vitest --watch --config vitest.config.unit.ts"
48
48
  },
49
49
  "dependencies": {
50
- "@semiont/api-client": "0.5.3",
51
- "@semiont/content": "0.5.3",
52
- "@semiont/core": "0.5.3",
53
- "@semiont/event-sourcing": "0.5.3",
54
- "@semiont/graph": "0.5.3",
55
- "@semiont/sdk": "0.5.3",
56
- "@semiont/make-meaning": "0.5.3",
50
+ "@semiont/api-client": "0.5.4",
51
+ "@semiont/content": "0.5.4",
52
+ "@semiont/core": "0.5.4",
53
+ "@semiont/event-sourcing": "0.5.4",
54
+ "@semiont/graph": "0.5.4",
55
+ "@semiont/sdk": "0.5.4",
56
+ "@semiont/make-meaning": "0.5.4",
57
57
  "arg": "^5.0.2",
58
58
  "argon2": "^0.44.0",
59
59
  "express": "^5.2.1",
@@ -72,7 +72,7 @@
72
72
  "@types/react": "^19.2.14",
73
73
  "@vitest/coverage-v8": "^4.1.0",
74
74
  "chalk": "^5.3.0",
75
- "typescript": "^5.9.2"
75
+ "typescript": "^6.0.2"
76
76
  },
77
77
  "optionalDependencies": {
78
78
  "@aws-sdk/client-cloudformation": "^3.600.0",
@@ -1,2 +0,0 @@
1
- import{r as e}from"./vendor-DJo4KD8w.js";function a({title:r,titleId:t,...o},n){return e.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:n,"aria-labelledby":t},o),r?e.createElement("title",{id:t},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"}))}const i=e.forwardRef(a);export{i as F};
2
- //# sourceMappingURL=ArrowsRightLeftIcon-BzLgl5o9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArrowsRightLeftIcon-BzLgl5o9.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowsRightLeftIcon.js"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowsRightLeftIcon({\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: \"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowsRightLeftIcon);\nexport default ForwardRef;"],"names":["ArrowsRightLeftIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef"],"mappings":"yCACA,SAASA,EAAoB,CAC3B,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,4EACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBP,CAAmB","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./vendor-DJo4KD8w.js";function a({title:r,titleId:t,...n},o){return e.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":t},n),r?e.createElement("title",{id:t},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"}))}const l=e.forwardRef(a);function s({title:r,titleId:t,...n},o){return e.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":t},n),r?e.createElement("title",{id:t},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 19.5 8.25 12l7.5-7.5"}))}const c=e.forwardRef(s);export{l as F,c as a};
2
- //# sourceMappingURL=ChevronLeftIcon-BLyRNZuL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChevronLeftIcon-BLyRNZuL.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/Bars3Icon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ChevronLeftIcon.js"],"sourcesContent":["import * as React from \"react\";\nfunction Bars3Icon({\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: \"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(Bars3Icon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ChevronLeftIcon({\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: \"M15.75 19.5 8.25 12l7.5-7.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChevronLeftIcon);\nexport default ForwardRef;"],"names":["Bars3Icon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","ChevronLeftIcon"],"mappings":"yCACA,SAASA,EAAU,CACjB,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,8CACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBP,CAAS,ECvB3D,SAASQ,EAAgB,CACvB,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,6BACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBC,CAAe","x_google_ignoreList":[0,1]}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./vendor-DJo4KD8w.js";function a({title:r,titleId:o,...t},n){return e.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:n,"aria-labelledby":o},t),r?e.createElement("title",{id:o},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"}))}const s=e.forwardRef(a);export{s as F};
2
- //# sourceMappingURL=CommandLineIcon-Ba4gpk8e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandLineIcon-Ba4gpk8e.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/CommandLineIcon.js"],"sourcesContent":["import * as React from \"react\";\nfunction CommandLineIcon({\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: \"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CommandLineIcon);\nexport default ForwardRef;"],"names":["CommandLineIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef"],"mappings":"yCACA,SAASA,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,uJACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBP,CAAe","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-QjYSiWWG.js";import{r}from"./vendor-DJo4KD8w.js";import{g as v,C as N,e as k,s as C,d as E}from"./privacy-Rbj4Ycw9.js";import{u as D}from"./i18n-BbpF47i1.js";import{F as L,a as g}from"./XMarkIcon-KMKD47CF.js";function R({title:a,titleId:n,...l},t){return r.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:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"}))}const M=r.forwardRef(R);function S({title:a,titleId:n,...l},t){return r.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:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495"}))}const A=r.forwardRef(S);function F({title:a,titleId:n,...l},t){return r.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:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"}))}const $=r.forwardRef(F);function H({isOpen:a,onClose:n}){const{t:l}=D(),t=(s,i)=>l(`CookiePreferences.${s}`,i),[o,m]=r.useState(null),[d,u]=r.useState(!1),[b,x]=r.useState(!1),f=r.useRef(n);r.useEffect(()=>{f.current=n}),r.useEffect(()=>{if(a){const s=v();m(s||{necessary:!0,analytics:!1,marketing:!1,preferences:!1,timestamp:new Date().toISOString(),version:"1.0"})}},[a]),r.useEffect(()=>{if(!a)return;const s=i=>{i.key==="Escape"&&f.current()};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s)}},[a]);const p=async()=>{o&&(u(!0),C(o),u(!1),n())},j=s=>{s==="necessary"||!o||m(i=>i?{...i,[s]:!i[s]}:null)},y=()=>{const s=k(),i=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),h=URL.createObjectURL(i),c=document.createElement("a");c.href=h,c.download=`semiont-user-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(h)},w=()=>{E()};return!a||!o?null:e.jsxs("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75",onClick:n}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative",children:[e.jsx("button",{onClick:n,className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1","aria-label":"Close",children:e.jsx(L,{className:"h-6 w-6"})}),e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(A,{className:"h-6 w-6 text-blue-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("title")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("description")})})]})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-gray-50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx($,{className:"h-5 w-5 text-green-500 mr-2"}),e.jsx("span",{className:"text-sm font-medium text-gray-900",children:t("currentSettings")})]}),e.jsxs("div",{className:"mt-2 text-xs text-gray-600",children:[e.jsx("p",{children:t("lastUpdated",{date:new Date(o.timestamp).toLocaleDateString()})}),e.jsx("p",{children:t("version",{version:o.version})})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900",children:t("cookieCategories")}),N.map(s=>e.jsx("div",{className:"border border-gray-200 rounded-lg p-4",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{id:`pref-${s.id}`,type:"checkbox",checked:o[s.id]||!1,onChange:()=>j(s.id),disabled:s.required||d,className:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50"}),e.jsxs("label",{htmlFor:`pref-${s.id}`,className:"ml-3 text-sm font-medium text-gray-900 cursor-pointer",children:[s.name,s.required&&e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:t("required")})]})]}),e.jsx("p",{className:"mt-1 text-sm text-gray-600",children:s.description}),e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-blue-600 cursor-pointer hover:text-blue-800",children:t("viewCookies",{count:s.cookies.length})}),e.jsx("div",{className:"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2",children:e.jsx("ul",{className:"list-disc list-inside space-y-1",children:s.cookies.map(i=>e.jsx("li",{children:i},i))})})]})]})})},s.id))]}),e.jsxs("div",{className:"border-t border-gray-200 pt-6",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900 mb-4",children:t("dataManagement")}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("button",{onClick:y,className:"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:[e.jsx(M,{className:"h-4 w-4 mr-2"}),t("exportMyData")]}),e.jsxs("button",{onClick:()=>x(!0),className:"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500",children:[e.jsx(g,{className:"h-4 w-4 mr-2"}),t("deleteAllData")]})]}),e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:t("dataManagementDescription")})]})]})}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-2 justify-center",children:[e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!1,marketing:!1,preferences:!1}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("rejectAll")}),e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!0,marketing:!0,preferences:!0}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("acceptAll")})]}),e.jsxs("div",{className:"mt-6 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:p,disabled:d,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50",children:t(d?"saving":"saveChanges")}),e.jsx("button",{type:"button",onClick:n,className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]}),b&&e.jsx("div",{className:"fixed inset-0 z-60 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75"}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6",children:[e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(g,{className:"h-6 w-6 text-red-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("deleteConfirmTitle")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("deleteConfirmDescription")})})]})]}),e.jsxs("div",{className:"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:w,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm",children:t("deleteAllData")}),e.jsx("button",{type:"button",onClick:()=>x(!1),className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]})})]})}export{H as C,$ as F};
2
- //# sourceMappingURL=CookiePreferences-BizeRUGG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CookiePreferences-BizeRUGG.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowDownTrayIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/CogIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js","../../src/components/CookiePreferences.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowDownTrayIcon({\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: \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowDownTrayIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CogIcon({\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 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CogIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldCheckIcon({\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: \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldCheckIcon);\nexport default ForwardRef;","\"use client\";\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n getCookieConsent,\n setCookieConsent,\n COOKIE_CATEGORIES,\n CookieConsent,\n exportUserData,\n deleteAllUserData,\n type CookieCategory\n} from '@/lib/cookies';\nimport {\n CogIcon,\n TrashIcon,\n ArrowDownTrayIcon,\n ShieldCheckIcon,\n XMarkIcon\n} from '@heroicons/react/24/outline';\n\ninterface CookiePreferencesProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport function CookiePreferences({ isOpen, onClose }: CookiePreferencesProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`CookiePreferences.${k}`, p as any) as string;\n const [consent, setConsent] = useState<CookieConsent | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n // Store callback in ref to avoid including in dependency arrays\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n });\n\n useEffect(() => {\n if (isOpen) {\n const currentConsent = getCookieConsent();\n setConsent(currentConsent || {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false,\n timestamp: new Date().toISOString(),\n version: '1.0'\n });\n }\n }, [isOpen]);\n\n // Handle ESC key to close modal\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onCloseRef.current();\n }\n };\n\n document.addEventListener('keydown', handleEsc);\n return () => {\n document.removeEventListener('keydown', handleEsc);\n };\n }, [isOpen]);\n\n const handleSave = async () => {\n if (!consent) return;\n \n setIsLoading(true);\n setCookieConsent(consent);\n setIsLoading(false);\n onClose();\n };\n\n const handleCategoryToggle = (categoryId: keyof Omit<CookieConsent, 'timestamp' | 'version'>) => {\n if (categoryId === 'necessary' || !consent) return;\n \n setConsent(prev => prev ? {\n ...prev,\n [categoryId]: !prev[categoryId]\n } : null);\n };\n\n const handleExportData = () => {\n const data = exportUserData();\n const blob = new Blob([JSON.stringify(data, null, 2)], { \n type: 'application/json' \n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `semiont-user-data-${new Date().toISOString().split('T')[0]}.json`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n const handleDeleteAllData = () => {\n deleteAllUserData();\n };\n\n if (!isOpen || !consent) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n {/* Background overlay */}\n <div \n className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\"\n onClick={onClose}\n />\n\n {/* Modal panel */}\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative\">\n {/* Close button in upper right */}\n <button\n onClick={onClose}\n className=\"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-6 w-6\" />\n </button>\n\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10\">\n <CogIcon className=\"h-6 w-6 text-blue-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('title')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('description')}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <div className=\"space-y-6\">\n {/* Current consent info */}\n <div className=\"bg-gray-50 rounded-lg p-4\">\n <div className=\"flex items-center\">\n <ShieldCheckIcon className=\"h-5 w-5 text-green-500 mr-2\" />\n <span className=\"text-sm font-medium text-gray-900\">\n {t('currentSettings')}\n </span>\n </div>\n <div className=\"mt-2 text-xs text-gray-600\">\n <p>{t('lastUpdated', { date: new Date(consent.timestamp).toLocaleDateString() })}</p>\n <p>{t('version', { version: consent.version })}</p>\n </div>\n </div>\n\n {/* Cookie categories */}\n <div className=\"space-y-4\">\n <h4 className=\"text-base font-medium text-gray-900\">\n {t('cookieCategories')}\n </h4>\n \n {COOKIE_CATEGORIES.map((category: CookieCategory) => (\n <div key={category.id} className=\"border border-gray-200 rounded-lg p-4\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <div className=\"flex items-center\">\n <input\n id={`pref-${category.id}`}\n type=\"checkbox\"\n checked={consent[category.id] || false}\n onChange={() => handleCategoryToggle(category.id)}\n disabled={category.required || isLoading}\n className=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50\"\n />\n <label\n htmlFor={`pref-${category.id}`}\n className=\"ml-3 text-sm font-medium text-gray-900 cursor-pointer\"\n >\n {category.name}\n {category.required && (\n <span className=\"text-xs text-gray-500 ml-1\">{t('required')}</span>\n )}\n </label>\n </div>\n <p className=\"mt-1 text-sm text-gray-600\">\n {category.description}\n </p>\n <details className=\"mt-2\">\n <summary className=\"text-xs text-blue-600 cursor-pointer hover:text-blue-800\">\n {t('viewCookies', { count: category.cookies.length })}\n </summary>\n <div className=\"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2\">\n <ul className=\"list-disc list-inside space-y-1\">\n {category.cookies.map(cookie => (\n <li key={cookie}>{cookie}</li>\n ))}\n </ul>\n </div>\n </details>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Data management section */}\n <div className=\"border-t border-gray-200 pt-6\">\n <h4 className=\"text-base font-medium text-gray-900 mb-4\">\n {t('dataManagement')}\n </h4>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <button\n onClick={handleExportData}\n className=\"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n <ArrowDownTrayIcon className=\"h-4 w-4 mr-2\" />\n {t('exportMyData')}\n </button>\n\n <button\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500\"\n >\n <TrashIcon className=\"h-4 w-4 mr-2\" />\n {t('deleteAllData')}\n </button>\n </div>\n\n <p className=\"mt-2 text-xs text-gray-500\">\n {t('dataManagementDescription')}\n </p>\n </div>\n </div>\n </div>\n\n {/* Quick Actions */}\n <div className=\"mt-6 flex flex-wrap gap-2 justify-center\">\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('rejectAll')}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: true,\n marketing: true,\n preferences: true\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('acceptAll')}\n </button>\n </div>\n\n {/* Action buttons */}\n <div className=\"mt-6 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={isLoading}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50\"\n >\n {isLoading ? t('saving') : t('saveChanges')}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n\n {/* Delete confirmation modal */}\n {showDeleteConfirm && (\n <div className=\"fixed inset-0 z-60 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n <div className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\" />\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6\">\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\">\n <TrashIcon className=\"h-6 w-6 text-red-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('deleteConfirmTitle')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('deleteConfirmDescription')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleDeleteAllData}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm\"\n >\n {t('deleteAllData')}\n </button>\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(false)}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default CookiePreferences;"],"names":["ArrowDownTrayIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","CogIcon","ShieldCheckIcon","CookiePreferences","isOpen","onClose","_t","useTranslation","k","p","consent","setConsent","useState","isLoading","setIsLoading","showDeleteConfirm","setShowDeleteConfirm","onCloseRef","useRef","useEffect","currentConsent","getCookieConsent","handleEsc","event","handleSave","setCookieConsent","handleCategoryToggle","categoryId","prev","handleExportData","data","exportUserData","blob","url","a","handleDeleteAllData","deleteAllUserData","jsxs","jsx","XMarkIcon","COOKIE_CATEGORIES","category","cookie","TrashIcon"],"mappings":"4OACA,SAASA,EAAkB,CACzB,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,8GACP,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BC,EAAAA,WAAiBP,CAAiB,ECvBnE,SAASQ,EAAQ,CACf,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,mcACP,CAAG,CAAC,CACJ,CACA,MAAMC,EAA2BC,EAAAA,WAAiBC,CAAO,ECvBzD,SAASC,EAAgB,CACvB,MAAAR,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,oNACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBE,CAAe,ECE1D,SAASC,EAAkB,CAAE,OAAAC,EAAQ,QAAAC,GAAmC,CAC7E,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZ,EAAI,CAACC,EAAWC,IAAgCH,EAAG,qBAAqBE,CAAC,GAAIC,CAAQ,EACrF,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAA+B,IAAI,EAC3D,CAACC,EAAWC,CAAY,EAAIF,EAAAA,SAAS,EAAK,EAC1C,CAACG,EAAmBC,CAAoB,EAAIJ,EAAAA,SAAS,EAAK,EAG1DK,EAAaC,EAAAA,OAAOb,CAAO,EACjCc,EAAAA,UAAU,IAAM,CACdF,EAAW,QAAUZ,CACvB,CAAC,EAEDc,EAAAA,UAAU,IAAM,CACd,GAAIf,EAAQ,CACV,MAAMgB,EAAiBC,EAAA,EACvBV,EAAWS,GAAkB,CAC3B,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,GACb,UAAW,IAAI,KAAA,EAAO,YAAA,EACtB,QAAS,KAAA,CACV,CACH,CACF,EAAG,CAAChB,CAAM,CAAC,EAGXe,EAAAA,UAAU,IAAM,CACd,GAAI,CAACf,EACH,OAGF,MAAMkB,EAAaC,GAAyB,CACtCA,EAAM,MAAQ,UAChBN,EAAW,QAAA,CAEf,EAEA,gBAAS,iBAAiB,UAAWK,CAAS,EACvC,IAAM,CACX,SAAS,oBAAoB,UAAWA,CAAS,CACnD,CACF,EAAG,CAAClB,CAAM,CAAC,EAEX,MAAMoB,EAAa,SAAY,CACxBd,IAELI,EAAa,EAAI,EACjBW,EAAiBf,CAAO,EACxBI,EAAa,EAAK,EAClBT,EAAA,EACF,EAEMqB,EAAwBC,GAAmE,CAC3FA,IAAe,aAAe,CAACjB,GAEnCC,KAAmBiB,EAAO,CACxB,GAAGA,EACH,CAACD,CAAU,EAAG,CAACC,EAAKD,CAAU,CAAA,EAC5B,IAAI,CACV,EAEME,EAAmB,IAAM,CAC7B,MAAMC,EAAOC,EAAA,EACPC,EAAO,IAAI,KAAK,CAAC,KAAK,UAAUF,EAAM,KAAM,CAAC,CAAC,EAAG,CACrD,KAAM,kBAAA,CACP,EACKG,EAAM,IAAI,gBAAgBD,CAAI,EAC9BE,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,KAAOD,EACTC,EAAE,SAAW,qBAAqB,IAAI,KAAA,EAAO,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC,CAAC,QACxE,SAAS,KAAK,YAAYA,CAAC,EAC3BA,EAAE,MAAA,EACF,SAAS,KAAK,YAAYA,CAAC,EAC3B,IAAI,gBAAgBD,CAAG,CACzB,EAEME,EAAsB,IAAM,CAChCC,EAAA,CACF,EAEA,MAAI,CAAChC,GAAU,CAACM,EAAgB,KAG9B2B,EAAAA,KAAC,MAAA,CAAI,UAAU,qCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,4FAEb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CACC,UAAU,6DACV,QAASjC,CAAA,CAAA,EAIXgC,EAAAA,KAAC,MAAA,CAAI,UAAU,2LAEb,SAAA,CAAAC,EAAAA,IAAC,SAAA,CACC,QAASjC,EACT,UAAU,sKACV,aAAW,QAEX,SAAAiC,EAAAA,IAACC,EAAA,CAAU,UAAU,SAAA,CAAU,CAAA,CAAA,EAGjCF,EAAAA,KAAC,MAAA,CAAI,UAAU,yBACb,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,oHACb,eAACrC,EAAA,CAAQ,UAAU,wBAAwB,CAAA,CAC7C,EACAoC,EAAAA,KAAC,MAAA,CAAI,UAAU,4DACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,8CACX,SAAA,EAAE,OAAO,EACZ,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBACV,SAAA,EAAE,aAAa,CAAA,CAClB,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EACF,QAEC,MAAA,CAAI,UAAU,OACb,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,YAEb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,oBACb,SAAA,CAAAC,EAAAA,IAACpC,EAAA,CAAgB,UAAU,6BAAA,CAA8B,QACxD,OAAA,CAAK,UAAU,oCACb,SAAA,EAAE,iBAAiB,CAAA,CACtB,CAAA,EACF,EACAmC,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAAC,IAAA,CAAG,SAAA,EAAE,cAAe,CAAE,KAAM,IAAI,KAAK5B,EAAQ,SAAS,EAAE,mBAAA,CAAmB,CAAG,CAAA,CAAE,EACjF4B,MAAC,KAAG,SAAA,EAAE,UAAW,CAAE,QAAS5B,EAAQ,OAAA,CAAS,CAAA,CAAE,CAAA,CAAA,CACjD,CAAA,EACF,EAGA2B,EAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,sCACX,SAAA,EAAE,kBAAkB,EACvB,EAECE,EAAkB,IAAKC,SACrB,MAAA,CAAsB,UAAU,wCAC/B,SAAAH,EAAAA,IAAC,OAAI,UAAU,mCACb,SAAAD,EAAAA,KAAC,MAAA,CAAI,UAAU,SACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,oBACb,SAAA,CAAAC,EAAAA,IAAC,QAAA,CACC,GAAI,QAAQG,EAAS,EAAE,GACvB,KAAK,WACL,QAAS/B,EAAQ+B,EAAS,EAAE,GAAK,GACjC,SAAU,IAAMf,EAAqBe,EAAS,EAAE,EAChD,SAAUA,EAAS,UAAY5B,EAC/B,UAAU,0FAAA,CAAA,EAEZwB,EAAAA,KAAC,QAAA,CACC,QAAS,QAAQI,EAAS,EAAE,GAC5B,UAAU,wDAET,SAAA,CAAAA,EAAS,KACTA,EAAS,UACRH,EAAAA,IAAC,OAAA,CAAK,UAAU,6BAA8B,SAAA,EAAE,UAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAEhE,EACF,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,6BACV,WAAS,YACZ,EACAD,EAAAA,KAAC,UAAA,CAAQ,UAAU,OACjB,SAAA,CAAAC,EAAAA,IAAC,UAAA,CAAQ,UAAU,2DAChB,SAAA,EAAE,cAAe,CAAE,MAAOG,EAAS,QAAQ,MAAA,CAAQ,CAAA,CACtD,QACC,MAAA,CAAI,UAAU,uDACb,SAAAH,EAAAA,IAAC,KAAA,CAAG,UAAU,kCACX,SAAAG,EAAS,QAAQ,OAChBH,EAAAA,IAAC,KAAA,CAAiB,YAATI,CAAgB,CAC1B,EACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,GAtCQD,EAAS,EAuCnB,CACD,CAAA,EACH,EAGAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,gCACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,2CACX,SAAA,EAAE,gBAAgB,EACrB,EAEAD,EAAAA,KAAC,MAAA,CAAI,UAAU,wCACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,QAASR,EACT,UAAU,+NAEV,SAAA,CAAAS,EAAAA,IAAC7C,EAAA,CAAkB,UAAU,cAAA,CAAe,EAC3C,EAAE,cAAc,CAAA,CAAA,CAAA,EAGnB4C,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMrB,EAAqB,EAAI,EACxC,UAAU,2NAEV,SAAA,CAAAsB,EAAAA,IAACK,EAAA,CAAU,UAAU,cAAA,CAAe,EACnC,EAAE,eAAe,CAAA,CAAA,CAAA,CACpB,EACF,QAEC,IAAA,CAAE,UAAU,6BACV,SAAA,EAAE,2BAA2B,CAAA,CAChC,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,EAGAN,EAAAA,KAAC,MAAA,CAAI,UAAU,2CACb,SAAA,CAAAC,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,CACb3B,KAAmBiB,EAAO,CACxB,GAAGA,EACH,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,EAAA,EACX,IAAI,CACV,EACA,SAAUf,EACV,UAAU,0NAET,WAAE,WAAW,CAAA,CAAA,EAEhByB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAM,CACb3B,KAAmBiB,EAAO,CACxB,GAAGA,EACH,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,EAAA,EACX,IAAI,CACV,EACA,SAAUf,EACV,UAAU,8NAET,WAAE,WAAW,CAAA,CAAA,CAChB,EACF,EAGAwB,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAC,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASd,EACT,SAAUX,EACV,UAAU,uRAET,SAAY,EAAZA,EAAc,SAAc,aAAN,CAAmB,CAAA,EAE5CyB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASjC,EACT,UAAU,sQAET,WAAE,QAAQ,CAAA,CAAA,CACb,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EACF,EAGCU,SACE,MAAA,CAAI,UAAU,qCACb,SAAAsB,EAAAA,KAAC,MAAA,CAAI,UAAU,4FACb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CAAI,UAAU,4DAAA,CAA6D,EAC5ED,EAAAA,KAAC,MAAA,CAAI,UAAU,iLACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,yBACb,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,mHACb,eAACK,EAAA,CAAU,UAAU,uBAAuB,CAAA,CAC9C,EACAN,EAAAA,KAAC,MAAA,CAAI,UAAU,gDACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,8CACX,SAAA,EAAE,oBAAoB,EACzB,EACAA,EAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,IAAC,IAAA,CAAE,UAAU,wBACV,SAAA,EAAE,0BAA0B,CAAA,CAC/B,CAAA,CACF,CAAA,CAAA,CACF,CAAA,EACF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,2CACb,SAAA,CAAAC,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAASH,EACT,UAAU,gQAET,WAAE,eAAe,CAAA,CAAA,EAEpBG,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMtB,EAAqB,EAAK,EACzC,UAAU,sQAET,WAAE,QAAQ,CAAA,CAAA,CACb,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EAEJ,CAEJ","x_google_ignoreList":[0,1,2]}
@@ -1,2 +0,0 @@
1
- import{r as l}from"./vendor-DJo4KD8w.js";import{I as lt,J as dt,j as u}from"./index-QjYSiWWG.js";import"./i18n-BbpF47i1.js";function ut(t,d,a,o,s=1){const w=Math.min(t.startX,t.endX),j=Math.min(t.startY,t.endY),S=Math.max(t.startX,t.endX),v=Math.max(t.startY,t.endY),F=w/s,D=(S-w)/s,E=o-v/s,h=(v-j)/s;return{page:d,x:Math.round(F),y:Math.round(E),width:Math.round(D),height:Math.round(h)}}function B(t,d,a=1){const o=t.x*a,s=t.width*a,w=(d-t.y-t.height)*a,j=t.height*a;return{x:o,y:w,width:s,height:j}}function ht(t){return`page=${t.page}&viewrect=${t.x},${t.y},${t.width},${t.height}`}function J(t){try{const d=t.match(/page=(\d+)/);if(!d)return null;const a=parseInt(d[1],10),o=t.match(/viewrect=([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return o?{page:a,x:parseFloat(o[1]),y:parseFloat(o[2]),width:parseFloat(o[3]),height:parseFloat(o[4])}:null}catch{return null}}function ft(t){const d=t.match(/page=(\d+)/);return d?parseInt(d[1],10):null}async function gt(){return typeof window<"u"&&window.pdfjsLib?window.pdfjsLib:new Promise((t,d)=>{const a=document.createElement("script");a.src="/pdfjs/pdf.min.mjs",a.type="module",a.onload=()=>{const o=window.pdfjsLib;if(!o){d(new Error("PDF.js loaded but pdfjsLib not available"));return}o.GlobalWorkerOptions.workerSrc="/pdfjs/pdf.worker.min.mjs",t(o)},a.onerror=()=>{d(new Error("Failed to load PDF.js from /pdfjs/pdf.min.mjs"))},document.head.appendChild(a)})}async function pt(t){return(await gt()).getDocument({url:t}).promise}async function mt(t,d=1){const a=t.getViewport({scale:d}),o=document.createElement("canvas"),s=o.getContext("2d");if(!s)throw new Error("Failed to get 2D context");return o.width=a.width,o.height=a.height,await t.render({canvasContext:s,viewport:a}).promise,{dataUrl:o.toDataURL("image/png"),width:a.width,height:a.height}}function V(t){if(!t)return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"};switch(t){case"highlighting":return{stroke:"rgb(250, 204, 21)",fill:"rgba(250, 204, 21, 0.3)"};case"linking":return{stroke:"rgb(59, 130, 246)",fill:"rgba(59, 130, 246, 0.2)"};case"assessing":return{stroke:"rgb(239, 68, 68)",fill:"rgba(239, 68, 68, 0.2)"};case"commenting":return{stroke:"rgb(255, 255, 255)",fill:"rgba(255, 255, 255, 0.2)"};default:return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"}}}function yt({pdfUrl:t,existingAnnotations:d=[],drawingMode:a,selectedMotivation:o,session:s,hoveredAnnotationId:w,selectedAnnotationId:j,hoverDelayMs:S=150}){const[v,F]=l.useState(null),[D,E]=l.useState(0),[h,W]=l.useState(1),[N,K]=l.useState(null),[A,C]=l.useState(!0),[H,L]=l.useState(null),[f,Q]=l.useState(null),[p,U]=l.useState(null),[z]=l.useState(1.5),[M,b]=l.useState(!1),[r,y]=l.useState(null),Z=l.useRef(null),g=l.useRef(null);l.useEffect(()=>{let e=!1;async function n(){try{C(!0),L(null);const c=await pt(t);if(e)return;F(c),E(c.numPages),C(!1)}catch(c){if(e)return;console.error("Error loading PDF:",c),L("Failed to load PDF"),C(!1)}}return n(),()=>{e=!0}},[t]),l.useEffect(()=>{if(!v)return;let e=!1;const n=v;async function c(){try{const i=await n.getPage(h);if(e)return;const m=i.getViewport({scale:1});Q({width:m.width,height:m.height});const{dataUrl:x}=await mt(i,z);if(e)return;K(x)}catch(i){if(e)return;console.error("Error loading page:",i),L("Failed to load page")}}return c(),()=>{e=!0}},[v,h,z]),l.useEffect(()=>{const e=()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})};e();let n=null;try{n=new ResizeObserver(e),g.current&&n.observe(g.current)}catch{console.warn("ResizeObserver not supported, falling back to window resize listener"),window.addEventListener("resize",e)}return()=>{n?n.disconnect():window.removeEventListener("resize",e)}},[N]);const tt=l.useCallback(e=>{if(!a||!g.current)return;const n=g.current.getBoundingClientRect(),c=e.clientX-n.left,i=e.clientY-n.top;b(!0),y({startX:c,startY:i,endX:c,endY:i})},[a]),et=l.useCallback(e=>{if(!M||!r||!g.current)return;const n=g.current.getBoundingClientRect();y({...r,endX:e.clientX-n.left,endY:e.clientY-n.top})},[M,r]),nt=l.useCallback(()=>{if(!M||!r||!f||!p||!s){b(!1),y(null);return}if(Math.sqrt(Math.pow(r.endX-r.startX,2)+Math.pow(r.endY-r.startY,2))<10){if(d.length>0){const k=$.find(T=>{const Y=I(T.target);if(!Y)return!1;const _=J(Y.value);if(!_)return!1;const P=B(_,f.height,1),R=p.width/f.width,q=p.height/f.height,O=P.x*R,G=P.y*q,it=P.width*R,ct=P.height*q;return r.endX>=O&&r.endX<=O+it&&r.endY>=G&&r.endY<=G+ct});if(k){s==null||s.client.browse.click(k.id,k.motivation),b(!1),y(null);return}}b(!1),y(null);return}const c=f.width/p.width,i=f.height/p.height,m={startX:r.startX*c,startY:r.startY*i,endX:r.endX*c,endY:r.endY*i},x=ut(m,h,f.width,f.height,1),X=ht(x);o&&s.client.mark.request({type:"FragmentSelector",conformsTo:"http://tools.ietf.org/rfc/rfc3778",value:X},o),b(!1)},[M,r,h,f,p,o,d]),I=e=>{const n=lt(e);if(!n)return null;const i=(Array.isArray(n)?n:[n]).find(m=>m.type==="FragmentSelector");return!i||i.type!=="FragmentSelector"?null:i},$=d.filter(e=>{const n=I(e.target);return n?ft(n.value)===h:!1}),{handleMouseEnter:rt,handleMouseLeave:at}=l.useMemo(()=>dt(e=>s==null?void 0:s.client.beckon.hover(e),S),[s,S]),{stroke:ot,fill:st}=V(o??null);return H?u.jsx("div",{className:"semiont-pdf-annotation-canvas__error",children:H}):u.jsxs("div",{className:"semiont-pdf-annotation-canvas",children:[A&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__loading",children:"Loading PDF..."}),u.jsxs("div",{ref:Z,className:"semiont-pdf-annotation-canvas__container",style:{display:A?"none":void 0},onMouseDown:tt,onMouseMove:et,onMouseUp:nt,onMouseLeave:()=>{M&&(b(!1),y(null))},"data-drawing-mode":a||"none",children:[N&&u.jsx("img",{ref:g,src:N,alt:`PDF page ${h}`,className:"semiont-pdf-annotation-canvas__image",draggable:!1,style:{pointerEvents:"none"},onLoad:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})})})}}),p&&f&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay-container",children:u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay",children:u.jsxs("svg",{className:"semiont-pdf-annotation-canvas__svg",width:p.width,height:p.height,children:[$.map(e=>{const n=I(e.target);if(!n)return null;const c=J(n.value);if(!c)return null;const i=B(c,f.height,1),m=p.width/f.width,x=p.height/f.height,X=e.id===w,k=e.id===j,T=e.motivation,{stroke:Y,fill:_}=V(T);return u.jsx("rect",{x:i.x*m,y:i.y*x,width:i.width*m,height:i.height*x,stroke:Y,strokeWidth:k?4:X?3:2,fill:_,style:{pointerEvents:"auto",cursor:"pointer",opacity:k?1:X?.9:.7},onClick:()=>s==null?void 0:s.client.browse.click(e.id,e.motivation),onMouseEnter:()=>rt(e.id),onMouseLeave:at},e.id)}),r&&(()=>{const e=Math.min(r.startX,r.endX),n=Math.min(r.startY,r.endY),c=Math.abs(r.endX-r.startX),i=Math.abs(r.endY-r.startY);return u.jsx("rect",{x:e,y:n,width:c,height:i,stroke:ot,strokeWidth:2,strokeDasharray:"5,5",fill:st,pointerEvents:"none"})})()]})})})]}),D>0&&u.jsxs("div",{className:"semiont-pdf-annotation-canvas__controls",children:[u.jsx("button",{disabled:h<=1,onClick:()=>W(h-1),className:"semiont-pdf-annotation-canvas__button",children:"Previous"}),u.jsxs("span",{className:"semiont-pdf-annotation-canvas__page-info",children:["Page ",h," of ",D]}),u.jsx("button",{disabled:h>=D,onClick:()=>W(h+1),className:"semiont-pdf-annotation-canvas__button",children:"Next"})]})]})}export{yt as PdfAnnotationCanvas};
2
- //# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js","sources":["../../../../packages/react-ui/dist/PdfAnnotationCanvas.client-5QESNO5H.mjs"],"sourcesContent":["'use client';\n\"use client\";\nimport \"./chunk-D4GAAQMM.mjs\";\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { useRef, useState, useCallback, useEffect, useMemo } from \"react\";\nimport { getTargetSelector } from \"@semiont/core\";\nimport { createHoverHandlers } from \"@semiont/sdk\";\n\n// src/lib/pdf-coordinates.ts\nfunction canvasToPdfCoordinates(canvasRect, page, _pageWidth, pageHeight, scale = 1) {\n const x1 = Math.min(canvasRect.startX, canvasRect.endX);\n const y1 = Math.min(canvasRect.startY, canvasRect.endY);\n const x2 = Math.max(canvasRect.startX, canvasRect.endX);\n const y2 = Math.max(canvasRect.startY, canvasRect.endY);\n const pdfX = x1 / scale;\n const pdfWidth = (x2 - x1) / scale;\n const pdfY = pageHeight - y2 / scale;\n const pdfHeight = (y2 - y1) / scale;\n return {\n page,\n x: Math.round(pdfX),\n y: Math.round(pdfY),\n width: Math.round(pdfWidth),\n height: Math.round(pdfHeight)\n };\n}\nfunction pdfToCanvasCoordinates(pdfCoord, pageHeight, scale = 1) {\n const canvasX = pdfCoord.x * scale;\n const canvasWidth = pdfCoord.width * scale;\n const canvasY = (pageHeight - pdfCoord.y - pdfCoord.height) * scale;\n const canvasHeight = pdfCoord.height * scale;\n return {\n x: canvasX,\n y: canvasY,\n width: canvasWidth,\n height: canvasHeight\n };\n}\nfunction createFragmentSelector(coord) {\n return `page=${coord.page}&viewrect=${coord.x},${coord.y},${coord.width},${coord.height}`;\n}\nfunction parseFragmentSelector(fragment) {\n try {\n const pageMatch = fragment.match(/page=(\\d+)/);\n if (!pageMatch) return null;\n const page = parseInt(pageMatch[1], 10);\n const viewrectMatch = fragment.match(/viewrect=([\\d.]+),([\\d.]+),([\\d.]+),([\\d.]+)/);\n if (!viewrectMatch) return null;\n return {\n page,\n x: parseFloat(viewrectMatch[1]),\n y: parseFloat(viewrectMatch[2]),\n width: parseFloat(viewrectMatch[3]),\n height: parseFloat(viewrectMatch[4])\n };\n } catch {\n return null;\n }\n}\nfunction getPageFromFragment(fragment) {\n const match = fragment.match(/page=(\\d+)/);\n return match ? parseInt(match[1], 10) : null;\n}\n\n// src/lib/browser-pdfjs.ts\nasync function ensurePdfJs() {\n if (typeof window !== \"undefined\" && window.pdfjsLib) {\n return window.pdfjsLib;\n }\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = \"/pdfjs/pdf.min.mjs\";\n script.type = \"module\";\n script.onload = () => {\n const pdfjsLib = window.pdfjsLib;\n if (!pdfjsLib) {\n reject(new Error(\"PDF.js loaded but pdfjsLib not available\"));\n return;\n }\n pdfjsLib.GlobalWorkerOptions.workerSrc = \"/pdfjs/pdf.worker.min.mjs\";\n resolve(pdfjsLib);\n };\n script.onerror = () => {\n reject(new Error(\"Failed to load PDF.js from /pdfjs/pdf.min.mjs\"));\n };\n document.head.appendChild(script);\n });\n}\nasync function loadPdfDocument(url) {\n const pdfjsLib = await ensurePdfJs();\n const loadingTask = pdfjsLib.getDocument({ url });\n return loadingTask.promise;\n}\nasync function renderPdfPageToDataUrl(page, scale = 1) {\n const viewport = page.getViewport({ scale });\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Failed to get 2D context\");\n }\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n await renderTask.promise;\n return {\n dataUrl: canvas.toDataURL(\"image/png\"),\n width: viewport.width,\n height: viewport.height\n };\n}\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction getMotivationColor(motivation) {\n if (!motivation) {\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n switch (motivation) {\n case \"highlighting\":\n return { stroke: \"rgb(250, 204, 21)\", fill: \"rgba(250, 204, 21, 0.3)\" };\n case \"linking\":\n return { stroke: \"rgb(59, 130, 246)\", fill: \"rgba(59, 130, 246, 0.2)\" };\n case \"assessing\":\n return { stroke: \"rgb(239, 68, 68)\", fill: \"rgba(239, 68, 68, 0.2)\" };\n case \"commenting\":\n return { stroke: \"rgb(255, 255, 255)\", fill: \"rgba(255, 255, 255, 0.2)\" };\n default:\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n}\nfunction PdfAnnotationCanvas({\n pdfUrl,\n existingAnnotations = [],\n drawingMode,\n selectedMotivation,\n session,\n hoveredAnnotationId,\n selectedAnnotationId,\n hoverDelayMs = 150\n}) {\n const [pdfDoc, setPdfDoc] = useState(null);\n const [numPages, setNumPages] = useState(0);\n const [pageNumber, setPageNumber] = useState(1);\n const [pageImageUrl, setPageImageUrl] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pageDimensions, setPageDimensions] = useState(null);\n const [displayDimensions, setDisplayDimensions] = useState(null);\n const [scale] = useState(1.5);\n const [isDrawing, setIsDrawing] = useState(false);\n const [selection, setSelection] = useState(null);\n const containerRef = useRef(null);\n const imageRef = useRef(null);\n useEffect(() => {\n let cancelled = false;\n async function loadPdf() {\n try {\n setIsLoading(true);\n setError(null);\n const doc = await loadPdfDocument(pdfUrl);\n if (cancelled) return;\n setPdfDoc(doc);\n setNumPages(doc.numPages);\n setIsLoading(false);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading PDF:\", err);\n setError(\"Failed to load PDF\");\n setIsLoading(false);\n }\n }\n loadPdf();\n return () => {\n cancelled = true;\n };\n }, [pdfUrl]);\n useEffect(() => {\n if (!pdfDoc) return;\n let cancelled = false;\n const doc = pdfDoc;\n async function loadPage() {\n try {\n const page = await doc.getPage(pageNumber);\n if (cancelled) return;\n const viewport = page.getViewport({ scale: 1 });\n setPageDimensions({\n width: viewport.width,\n height: viewport.height\n });\n const { dataUrl } = await renderPdfPageToDataUrl(page, scale);\n if (cancelled) return;\n setPageImageUrl(dataUrl);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading page:\", err);\n setError(\"Failed to load page\");\n }\n }\n loadPage();\n return () => {\n cancelled = true;\n };\n }, [pdfDoc, pageNumber, scale]);\n useEffect(() => {\n const updateDisplayDimensions = () => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n };\n updateDisplayDimensions();\n let resizeObserver = null;\n try {\n resizeObserver = new ResizeObserver(updateDisplayDimensions);\n if (imageRef.current) {\n resizeObserver.observe(imageRef.current);\n }\n } catch (error2) {\n console.warn(\"ResizeObserver not supported, falling back to window resize listener\");\n window.addEventListener(\"resize\", updateDisplayDimensions);\n }\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else {\n window.removeEventListener(\"resize\", updateDisplayDimensions);\n }\n };\n }, [pageImageUrl]);\n const handleMouseDown = useCallback((e) => {\n if (!drawingMode) return;\n if (!imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setIsDrawing(true);\n setSelection({\n startX: x,\n startY: y,\n endX: x,\n endY: y\n });\n }, [drawingMode]);\n const handleMouseMove = useCallback((e) => {\n if (!isDrawing || !selection || !imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n setSelection({\n ...selection,\n endX: e.clientX - rect.left,\n endY: e.clientY - rect.top\n });\n }, [isDrawing, selection]);\n const handleMouseUp = useCallback(() => {\n if (!isDrawing || !selection || !pageDimensions || !displayDimensions || !session) {\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const dragDistance = Math.sqrt(\n Math.pow(selection.endX - selection.startX, 2) + Math.pow(selection.endY - selection.startY, 2)\n );\n const MIN_DRAG_DISTANCE = 10;\n if (dragDistance < MIN_DRAG_DISTANCE) {\n if (existingAnnotations.length > 0) {\n const clickedAnnotation = pageAnnotations.find((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const pdfCoord2 = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord2) return false;\n const rect = pdfToCanvasCoordinates(pdfCoord2, pageDimensions.height, 1);\n const scaleX2 = displayDimensions.width / pageDimensions.width;\n const scaleY2 = displayDimensions.height / pageDimensions.height;\n const displayX = rect.x * scaleX2;\n const displayY = rect.y * scaleY2;\n const displayWidth = rect.width * scaleX2;\n const displayHeight = rect.height * scaleY2;\n return selection.endX >= displayX && selection.endX <= displayX + displayWidth && selection.endY >= displayY && selection.endY <= displayY + displayHeight;\n });\n if (clickedAnnotation) {\n session?.client.browse.click(clickedAnnotation.id, clickedAnnotation.motivation);\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n }\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const scaleX = pageDimensions.width / displayDimensions.width;\n const scaleY = pageDimensions.height / displayDimensions.height;\n const nativeSelection = {\n startX: selection.startX * scaleX,\n startY: selection.startY * scaleY,\n endX: selection.endX * scaleX,\n endY: selection.endY * scaleY\n };\n const pdfCoord = canvasToPdfCoordinates(\n nativeSelection,\n pageNumber,\n pageDimensions.width,\n pageDimensions.height,\n 1\n // Use scale 1.0 since we already scaled to native coords\n );\n const fragmentSelector = createFragmentSelector(pdfCoord);\n if (selectedMotivation) {\n session.client.mark.request(\n {\n type: \"FragmentSelector\",\n conformsTo: \"http://tools.ietf.org/rfc/rfc3778\",\n value: fragmentSelector\n },\n selectedMotivation\n );\n }\n setIsDrawing(false);\n }, [isDrawing, selection, pageNumber, pageDimensions, displayDimensions, selectedMotivation, existingAnnotations]);\n const getFragmentSelector = (target) => {\n const selector = getTargetSelector(target);\n if (!selector) return null;\n const selectors = Array.isArray(selector) ? selector : [selector];\n const found = selectors.find((s) => s.type === \"FragmentSelector\");\n if (!found || found.type !== \"FragmentSelector\") return null;\n return found;\n };\n const pageAnnotations = existingAnnotations.filter((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const page = getPageFromFragment(fragmentSel.value);\n return page === pageNumber;\n });\n const { handleMouseEnter, handleMouseLeave } = useMemo(\n () => createHoverHandlers((id) => session?.client.beckon.hover(id), hoverDelayMs),\n [session, hoverDelayMs]\n );\n const { stroke, fill } = getMotivationColor(selectedMotivation ?? null);\n if (error) {\n return /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__error\", children: error });\n }\n return /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas\", children: [\n isLoading && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__loading\", children: \"Loading PDF...\" }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: containerRef,\n className: \"semiont-pdf-annotation-canvas__container\",\n style: { display: isLoading ? \"none\" : void 0 },\n onMouseDown: handleMouseDown,\n onMouseMove: handleMouseMove,\n onMouseUp: handleMouseUp,\n onMouseLeave: () => {\n if (isDrawing) {\n setIsDrawing(false);\n setSelection(null);\n }\n },\n \"data-drawing-mode\": drawingMode || \"none\",\n children: [\n pageImageUrl && /* @__PURE__ */ jsx(\n \"img\",\n {\n ref: imageRef,\n src: pageImageUrl,\n alt: `PDF page ${pageNumber}`,\n className: \"semiont-pdf-annotation-canvas__image\",\n draggable: false,\n style: { pointerEvents: \"none\" },\n onLoad: () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n });\n });\n }\n }\n ),\n displayDimensions && pageDimensions && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay-container\", children: /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay\", children: /* @__PURE__ */ jsxs(\n \"svg\",\n {\n className: \"semiont-pdf-annotation-canvas__svg\",\n width: displayDimensions.width,\n height: displayDimensions.height,\n children: [\n pageAnnotations.map((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return null;\n const pdfCoord = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord) return null;\n const rect = pdfToCanvasCoordinates(pdfCoord, pageDimensions.height, 1);\n const scaleX = displayDimensions.width / pageDimensions.width;\n const scaleY = displayDimensions.height / pageDimensions.height;\n const isHovered = ann.id === hoveredAnnotationId;\n const isSelected = ann.id === selectedAnnotationId;\n const annMotivation = ann.motivation;\n const { stroke: annStroke, fill: annFill } = getMotivationColor(annMotivation);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rect.x * scaleX,\n y: rect.y * scaleY,\n width: rect.width * scaleX,\n height: rect.height * scaleY,\n stroke: annStroke,\n strokeWidth: isSelected ? 4 : isHovered ? 3 : 2,\n fill: annFill,\n style: {\n pointerEvents: \"auto\",\n cursor: \"pointer\",\n opacity: isSelected ? 1 : isHovered ? 0.9 : 0.7\n },\n onClick: () => session?.client.browse.click(ann.id, ann.motivation),\n onMouseEnter: () => handleMouseEnter(ann.id),\n onMouseLeave: handleMouseLeave\n },\n ann.id\n );\n }),\n selection && (() => {\n const rectX = Math.min(selection.startX, selection.endX);\n const rectY = Math.min(selection.startY, selection.endY);\n const rectWidth = Math.abs(selection.endX - selection.startX);\n const rectHeight = Math.abs(selection.endY - selection.startY);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rectX,\n y: rectY,\n width: rectWidth,\n height: rectHeight,\n stroke,\n strokeWidth: 2,\n strokeDasharray: \"5,5\",\n fill,\n pointerEvents: \"none\"\n }\n );\n })()\n ]\n }\n ) }) })\n ]\n }\n ),\n numPages > 0 && /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas__controls\", children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber <= 1,\n onClick: () => setPageNumber(pageNumber - 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Previous\"\n }\n ),\n /* @__PURE__ */ jsxs(\"span\", { className: \"semiont-pdf-annotation-canvas__page-info\", children: [\n \"Page \",\n pageNumber,\n \" of \",\n numPages\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber >= numPages,\n onClick: () => setPageNumber(pageNumber + 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Next\"\n }\n )\n ] })\n ] });\n}\nexport {\n PdfAnnotationCanvas\n};\n//# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H.mjs.map"],"names":["canvasToPdfCoordinates","canvasRect","page","_pageWidth","pageHeight","scale","x1","y1","x2","y2","pdfX","pdfWidth","pdfY","pdfHeight","pdfToCanvasCoordinates","pdfCoord","canvasX","canvasWidth","canvasY","canvasHeight","createFragmentSelector","coord","parseFragmentSelector","fragment","pageMatch","viewrectMatch","getPageFromFragment","match","ensurePdfJs","resolve","reject","script","pdfjsLib","loadPdfDocument","url","renderPdfPageToDataUrl","viewport","canvas","context","getMotivationColor","motivation","PdfAnnotationCanvas","pdfUrl","existingAnnotations","drawingMode","selectedMotivation","session","hoveredAnnotationId","selectedAnnotationId","hoverDelayMs","pdfDoc","setPdfDoc","useState","numPages","setNumPages","pageNumber","setPageNumber","pageImageUrl","setPageImageUrl","isLoading","setIsLoading","error","setError","pageDimensions","setPageDimensions","displayDimensions","setDisplayDimensions","isDrawing","setIsDrawing","selection","setSelection","containerRef","useRef","imageRef","useEffect","cancelled","loadPdf","doc","err","loadPage","dataUrl","updateDisplayDimensions","resizeObserver","handleMouseDown","useCallback","rect","x","y","handleMouseMove","handleMouseUp","clickedAnnotation","pageAnnotations","ann","fragmentSel","getFragmentSelector","pdfCoord2","scaleX2","scaleY2","displayX","displayY","displayWidth","displayHeight","scaleX","scaleY","nativeSelection","fragmentSelector","target","selector","getTargetSelector","found","s","handleMouseEnter","handleMouseLeave","useMemo","createHoverHandlers","id","stroke","fill","jsx","jsxs","isHovered","isSelected","annMotivation","annStroke","annFill","rectX","rectY","rectWidth","rectHeight"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{u as O,c as T,e as J,$ as X,a0 as q,a1 as ee,j as e,a2 as te,a3 as H,a4 as P,a5 as ne,a6 as se,a7 as ae,a8 as ie,n as oe,a9 as re,k as le,aa as ce,ab as de,ac as me}from"./index-QjYSiWWG.js";import{r as o}from"./vendor-DJo4KD8w.js";import{u as W,a as ue,b as he}from"./routing-CxPkffyg.js";import{u as U}from"./i18n-BbpF47i1.js";import{a as pe,F as ge}from"./XMarkIcon-KMKD47CF.js";function xe({title:i,titleId:n,...r},a){return o.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:a,"aria-labelledby":n},r),i?o.createElement("title",{id:n},i):null,o.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"}))}const fe=o.forwardRef(xe);function ve({title:i,titleId:n,...r},a){return o.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:a,"aria-labelledby":n},r),i?o.createElement("title",{id:n},i):null,o.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m4.5 12.75 6 6 9-13.5"}))}const je=o.forwardRef(ve);function be({title:i,titleId:n,...r},a){return o.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:a,"aria-labelledby":n},r),i?o.createElement("title",{id:n},i):null,o.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4.5v15m7.5-7.5h-15"}))}const ye=o.forwardRef(be),F="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==";function Se(){var A,l;const{t:i}=U(),n=(k,D)=>i(`UserPanel.${k}`,D),r=O(),a=T(r.activeSession$),s=T(a==null?void 0:a.user$)??null,p=(a==null?void 0:a.kb)??null,d=(s==null?void 0:s.name)??((A=s==null?void 0:s.email)==null?void 0:A.split("@")[0])??"User",f=(s==null?void 0:s.image)??null,m=(s==null?void 0:s.domain)||((l=s==null?void 0:s.email)==null?void 0:l.split("@")[1]),y=(s==null?void 0:s.isAdmin)??!1,u=(s==null?void 0:s.isModerator)??!1,v=a==null?void 0:a.client,h=J(()=>X(v)),j=W(),[S,E]=o.useState(!1),{timeRemaining:N}=q(),C=te(N)??"Unknown",w=(()=>{if(!f||S)return F;const k=ee(f);return k||(console.warn("Invalid profile image URL detected, using fallback"),F)})(),M=async()=>{await h.logout(),p&&await r.signOut(p.id),j.push("/")};return e.jsxs("div",{className:"semiont-user-panel",children:[e.jsx("h3",{className:"semiont-user-panel__title",children:n("account")}),p&&e.jsx("div",{style:{padding:"0 0.75rem 0.5rem",fontSize:"0.8rem",color:"var(--semiont-color-neutral-400)"},children:p.label}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("img",{src:w,alt:n("profileAlt",{name:d||n("user")}),width:48,height:48,className:"w-12 h-12 rounded-full object-cover",onError:()=>E(!0)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"semiont-panel-text",children:d||n("user")}),m&&e.jsxs("div",{className:"semiont-panel-text-secondary",children:["@",m]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"semiont-panel-label",children:n("session")}),e.jsx("div",{className:"semiont-session-box",children:e.jsx("div",{className:"semiont-panel-hint",children:n("expiresIn",{time:C})})})]}),(y||u)&&e.jsxs("div",{children:[e.jsx("label",{className:"semiont-panel-label",children:n("privileges")}),e.jsxs("div",{className:"space-y-1",children:[y&&e.jsx("div",{className:"semiont-privilege-badge semiont-privilege-badge--admin",children:e.jsx("span",{className:"semiont-privilege-text",children:n("administrator")})}),u&&e.jsx("div",{className:"semiont-privilege-badge semiont-privilege-badge--moderator",children:e.jsx("span",{className:"semiont-privilege-text",children:n("moderator")})})]})]}),e.jsx("div",{className:"semiont-panel-divider",children:e.jsx("button",{onClick:M,className:"semiont-signout-button",children:n("signOut")})})]})]})}const we={authenticated:"var(--semiont-color-success-500, #22c55e)",expired:"var(--semiont-color-warning-500, #eab308)","signed-out":"var(--semiont-color-neutral-400, #9ca3af)",unreachable:"var(--semiont-color-error-500, #ef4444)"},Ne={authenticated:"statusConnected",expired:"statusExpired","signed-out":"statusSignedOut",unreachable:"statusUnreachable"};function Ie({status:i,t:n}){return e.jsx("span",{title:n(Ne[i]),style:{width:"0.5rem",height:"0.5rem",borderRadius:"50%",backgroundColor:we[i],flexShrink:0}})}function Ae({t:i,onSubmit:n,onCancel:r,error:a,isSubmitting:s,autoFocus:p,pulsing:d,initialHost:f="localhost",initialPort:m=4e3,initialEmail:y="admin@example.com"}){const[u,v]=o.useState(f),[h,j]=o.useState(String(m)),[S,E]=o.useState(H(f)),[N,C]=o.useState(y),[w,M]=o.useState(""),A=l=>{v(l),E(H(l))};return e.jsxs("div",{className:d?"semiont-panel__login-form--pulsing":"",style:{margin:"0.5rem",padding:"0.75rem",border:"1px solid var(--semiont-color-neutral-200, #e5e7eb)",borderRadius:"var(--semiont-panel-border-radius, 0.5rem)",background:"var(--semiont-bg-secondary, transparent)"},children:[e.jsx("h3",{style:{fontSize:"0.8rem",fontWeight:600,marginBottom:"0.5rem"},children:i("connectTitle")}),e.jsxs("form",{onSubmit:l=>{l.preventDefault(),P(u)&&n(u,parseInt(h,10)||4e3,S,N,w)},style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[e.jsxs("select",{value:S,onChange:l=>E(l.target.value),className:"semiont-input",children:[e.jsx("option",{value:"http",children:"HTTP"}),e.jsx("option",{value:"https",children:"HTTPS"})]}),e.jsx("input",{type:"text",value:u,onChange:l=>A(l.target.value),placeholder:"Host",className:"semiont-input",autoFocus:p}),e.jsx("input",{type:"number",value:h,onChange:l=>j(l.target.value),placeholder:"Port",className:"semiont-input"}),u&&!P(u)&&e.jsx("div",{style:{color:"var(--semiont-color-error-500, #ef4444)",fontSize:"0.75rem"},children:i("invalidHost")}),e.jsx("input",{type:"email",value:N,onChange:l=>C(l.target.value),placeholder:"Email",className:"semiont-input"}),e.jsx("input",{type:"password",value:w,onChange:l=>M(l.target.value),placeholder:"Password",className:"semiont-input"}),a&&e.jsx("div",{style:{color:"var(--semiont-color-error-500, #ef4444)",fontSize:"0.75rem"},children:a}),e.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[e.jsx("button",{type:"submit",className:"semiont-button semiont-button--primary",style:{flex:1},disabled:s||!P(u),children:i(s?"connecting":"connect")}),e.jsx("button",{type:"button",className:"semiont-button",onClick:r,children:e.jsx(ge,{style:{width:"1rem",height:"1rem"}})})]})]})]})}function Ee({t:i,kb:n,onSubmit:r,onCancel:a,error:s,isSubmitting:p}){const[d,f]=o.useState("");return e.jsxs("form",{onSubmit:m=>{m.preventDefault(),r(d)},style:{padding:"0.5rem 0.75rem",display:"flex",flexDirection:"column",gap:"0.375rem"},children:[e.jsx("div",{style:{fontSize:"0.75rem",color:"var(--semiont-color-neutral-400)"},children:n.email}),e.jsx("input",{type:"password",value:d,onChange:m=>f(m.target.value),placeholder:"Password",className:"semiont-input",style:{fontSize:"0.8rem"},autoFocus:!0}),s&&e.jsx("div",{style:{color:"var(--semiont-color-error-500, #ef4444)",fontSize:"0.75rem"},children:s}),e.jsxs("div",{style:{display:"flex",gap:"0.375rem"},children:[e.jsx("button",{type:"submit",className:"semiont-button semiont-button--primary",style:{flex:1,fontSize:"0.8rem"},disabled:p,children:i(p?"signingIn":"signIn")}),e.jsx("button",{type:"button",className:"semiont-button",onClick:a,style:{fontSize:"0.8rem"},children:i("cancel")})]})]})}async function _(i,n,r,a,s){const p=`${r}://${i}:${n}`,d=new ne({baseUrl:se(p)}),f=new ae(d,new ie(d),d),m=await f.auth.password(a,s),y=m.token??m.accessToken,u=m.refreshToken;if(!y)throw new Error("No access token received");if(!u)throw new Error("No refresh token received");let v=`${i}:${n}`,h;try{const j=await f.admin.status();j.projectName&&(v=j.projectName),j.gitBranch&&(h=j.gitBranch)}catch{}return{token:y,refreshToken:u,label:v,...h?{gitBranch:h}:{}}}function ke(){var $;const{t:i}=U(),n=(t,g)=>i(`KnowledgeBasePanel.${t}`,g),r=O(),a=T(r.kbs$)??[],s=(($=T(r.activeSession$))==null?void 0:$.kb)??null,p=t=>{r.setActiveKb(t)},d=r.addKb.bind(r),f=r.removeKb.bind(r),m=r.updateKb.bind(r),y=(t,g,x)=>{r.signIn(t,g,x)},u=t=>{r.signOut(t)},[v,h]=o.useState(!1),[j,S]=o.useState(null),[E,N]=o.useState(!1),[C,w]=o.useState(null),[M,A]=o.useState(null),[l,k]=o.useState(!1),[D,L]=o.useState(null),[,Z]=o.useState(0);o.useEffect(()=>{a.length===0&&h(!0)},[a.length]),o.useEffect(()=>{const t=setInterval(()=>Z(g=>g+1),3e4);return()=>clearInterval(t)},[]);const G=()=>{h(!0),w(null),S(null)},Q=async(t,g,x,b,I)=>{S(null),N(!0);const R=a.find(c=>c.endpoint.kind==="http"&&c.endpoint.host===t&&c.endpoint.port===g);if(R){try{const{token:c,refreshToken:B,gitBranch:z}=await _(t,g,x,b,I);m(R.id,{...z?{gitBranch:z}:{}}),y(R.id,c,B),h(!1)}catch(c){S(c instanceof Error?c.message:String(c))}finally{N(!1)}return}try{const{token:c,refreshToken:B,label:z,gitBranch:K}=await _(t,g,x,b,I);d({label:z,email:b,endpoint:{kind:"http",host:t,port:g,protocol:x},...K?{gitBranch:K}:{}},c,B),h(!1)}catch(c){S(c instanceof Error?c.message:String(c))}finally{N(!1)}},Y=async(t,g)=>{const x=a.find(b=>b.id===t);if(x){if(A(null),k(!0),x.endpoint.kind!=="http"){A(`Re-auth is HTTP-only; KB endpoint kind "${x.endpoint.kind}" is not supported here.`),k(!1);return}try{const{token:b,refreshToken:I,label:R,gitBranch:c}=await _(x.endpoint.host,x.endpoint.port,x.endpoint.protocol,x.email,g);m(t,{label:R,...c?{gitBranch:c}:{}}),y(t,b,I),w(null)}catch(b){A(b instanceof Error?b.message:String(b))}finally{k(!1)}}},V=t=>{r.getKbSessionStatus(t.id)==="authenticated"?p(t.id):(w(t.id),h(!1),A(null))};return e.jsxs("div",{className:"semiont-panel",children:[e.jsx("div",{className:"semiont-panel-header",children:e.jsxs("h2",{className:"semiont-panel-header__title",children:[e.jsx("span",{className:"semiont-panel-header__text",children:n("title")}),e.jsxs("span",{className:"semiont-panel-header__count",children:["(",a.length,")"]})]})}),e.jsxs("div",{className:"semiont-panel__content",children:[e.jsx("div",{className:"semiont-panel__list",children:a.map(t=>{const g=r.getKbSessionStatus(t.id),x=t.id===(s==null?void 0:s.id),b=C===t.id;return e.jsxs("div",{children:[e.jsxs("div",{className:`semiont-panel-item semiont-panel-item--clickable${x?" semiont-panel-item--selected":""}`,style:{display:"flex",flexDirection:"column",gap:"0.25rem",cursor:"pointer",padding:"0.5rem 0.75rem"},onClick:()=>V(t),children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[e.jsx(Ie,{status:g,t:n}),e.jsx("span",{className:"semiont-panel-text",style:{flex:1,fontWeight:500},children:t.label}),x&&e.jsx(je,{style:{width:"1rem",height:"1rem",color:"var(--semiont-color-primary-500)",flexShrink:0}}),g==="authenticated"&&e.jsx("button",{onClick:I=>{I.stopPropagation(),u(t.id)},title:n("signOut"),style:{background:"none",border:"none",cursor:"pointer",padding:"0.125rem",color:"var(--semiont-color-neutral-400)"},children:e.jsx(fe,{style:{width:"0.875rem",height:"0.875rem"}})}),e.jsx("button",{onClick:I=>{I.stopPropagation(),L(t.id)},title:n("remove"),style:{background:"none",border:"none",cursor:"pointer",padding:"0.125rem",color:"var(--semiont-color-neutral-400)"},children:e.jsx(pe,{style:{width:"0.875rem",height:"0.875rem"}})})]}),e.jsxs("span",{className:"semiont-panel-text-secondary",style:{fontSize:"0.7rem",paddingLeft:"1rem"},children:[t.endpoint.kind==="http"?`${t.endpoint.host}:${t.endpoint.port}`:`local:${t.endpoint.kbId}`,t.gitBranch?` · ${t.gitBranch}`:""]})]}),D===t.id&&e.jsxs("div",{style:{padding:"0.5rem 0.75rem",fontSize:"0.8rem",display:"flex",alignItems:"center",gap:"0.5rem",background:"var(--semiont-bg-secondary, #f9fafb)",borderBottom:"1px solid var(--semiont-color-neutral-200, #e5e7eb)"},children:[e.jsx("span",{style:{flex:1,color:"var(--semiont-color-neutral-500)"},children:n("removeConfirm",{label:t.label})}),e.jsx("button",{onClick:()=>{f(t.id),L(null)},className:"semiont-button",style:{fontSize:"0.75rem",padding:"0.2rem 0.5rem",color:"var(--semiont-color-error-500, #ef4444)"},children:n("remove")}),e.jsx("button",{onClick:()=>L(null),className:"semiont-button",style:{fontSize:"0.75rem",padding:"0.2rem 0.5rem"},children:n("cancel")})]}),b&&e.jsx(Ee,{t:n,kb:t,onSubmit:I=>Y(t.id,I),onCancel:()=>w(null),error:M,isSubmitting:l})]},t.id)})}),v&&e.jsx(Ae,{t:n,onSubmit:Q,onCancel:()=>h(!1),error:j,isSubmitting:E,autoFocus:a.length===0,pulsing:a.length===0})]}),!v&&e.jsx("div",{className:"semiont-panel-footer",children:e.jsxs("button",{onClick:G,className:"semiont-panel-item semiont-panel-item--clickable",style:{width:"100%",display:"flex",alignItems:"center",gap:"0.5rem",color:"var(--semiont-color-primary-600)"},children:[e.jsx(ye,{style:{width:"1rem",height:"1rem",flexShrink:0}}),e.jsx("span",{className:"semiont-panel-text",style:{color:"inherit"},children:n("addKnowledgeBase")})]})})]})}function De({activePanel:i,theme:n,showLineNumbers:r,children:a}){const{hoverDelayMs:s}=oe(),{t:p}=U(),d=T(O().activeSession$),m=!!T(d==null?void 0:d.user$),y=ue(),u=W(),v=he(),[h,j]=o.useTransition(),{width:S,setWidth:E,minWidth:N,maxWidth:C}=re(),w=o.useCallback(({locale:M})=>{v&&j(()=>{u.replace(v,{locale:M})})},[v,u,j]);return le({"settings:locale-changed":w}),!i||!a&&!ce.includes(i)?null:e.jsxs("div",{className:"semiont-toolbar-panels",style:{width:`${S}px`,position:"relative"},children:[e.jsx(de,{onResize:E,minWidth:N,maxWidth:C,position:"left",ariaLabel:"Resize right panel"}),e.jsxs("div",{className:"semiont-toolbar-panels__content",children:[a,i==="knowledge-base"&&e.jsx(ke,{}),i==="user"&&(m?e.jsx(Se,{}):e.jsxs("div",{className:"semiont-panel",children:[e.jsx("div",{className:"semiont-panel-header",children:e.jsx("h2",{className:"semiont-panel-header__title",children:e.jsx("span",{className:"semiont-panel-header__text",children:p("UserPanel.account")})})}),e.jsx("div",{className:"semiont-panel__content",style:{padding:"1rem",textAlign:"center"},children:e.jsx("p",{style:{color:"var(--semiont-color-neutral-400)",fontSize:"0.85rem",lineHeight:1.5},children:p("AccountPanel.notAuthenticated")})})]})),i==="settings"&&e.jsx(me,{showLineNumbers:r,theme:n,hoverDelayMs:s,locale:y,isPendingLocaleChange:h})]})]})}export{ye as F,De as T};
2
- //# sourceMappingURL=ToolbarPanels-Cz2uv68j.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolbarPanels-Cz2uv68j.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowRightStartOnRectangleIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/CheckIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/PlusIcon.js","../../src/components/UserPanel.tsx","../../src/components/KnowledgeBasePanel.tsx","../../src/components/toolbar/ToolbarPanels.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowRightStartOnRectangleIcon({\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: \"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowRightStartOnRectangleIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CheckIcon({\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 12.75 6 6 9-13.5\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CheckIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction PlusIcon({\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: \"M12 4.5v15m7.5-7.5h-15\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(PlusIcon);\nexport default ForwardRef;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n sanitizeImageURL,\n useSessionExpiry,\n formatTime,\n useSemiont,\n useObservable,\n createSessionStateUnit,\n useStateUnit,\n} from '@semiont/react-ui';\nimport { useRouter } from '@/i18n/routing';\n\n// Fallback avatar when image fails to load or is invalid\nconst FALLBACK_AVATAR = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==';\n\nexport function UserPanel() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`UserPanel.${k}`, p as any) as string;\n const semiont = useSemiont();\n const session = useObservable(semiont.activeSession$);\n const user = useObservable(session?.user$) ?? null;\n const activeKnowledgeBase = session?.kb ?? null;\n const displayName = user?.name ?? user?.email?.split('@')[0] ?? 'User';\n const avatarUrl = user?.image ?? null;\n const userDomain = user?.domain || user?.email?.split('@')[1];\n const isAdmin = user?.isAdmin ?? false;\n const isModerator = user?.isModerator ?? false;\n const apiClient = session?.client;\n const sessionStateUnit = useStateUnit(() => createSessionStateUnit(apiClient!));\n const router = useRouter();\n const [imageError, setImageError] = useState(false);\n const { timeRemaining } = useSessionExpiry();\n const sessionTimeFormatted = formatTime(timeRemaining) ?? 'Unknown';\n\n // Sanitize and validate the profile image URL\n const profileImageUrl = (() => {\n if (!avatarUrl || imageError) {\n return FALLBACK_AVATAR;\n }\n\n const sanitized = sanitizeImageURL(avatarUrl);\n if (!sanitized) {\n console.warn('Invalid profile image URL detected, using fallback');\n return FALLBACK_AVATAR;\n }\n\n return sanitized;\n })();\n\n const handleSignOut = async () => {\n await sessionStateUnit.logout();\n if (activeKnowledgeBase) {\n await semiont.signOut(activeKnowledgeBase.id);\n }\n router.push('/');\n };\n\n return (\n <div className=\"semiont-user-panel\">\n <h3 className=\"semiont-user-panel__title\">\n {t('account')}\n </h3>\n\n {activeKnowledgeBase && (\n <div style={{ padding: '0 0.75rem 0.5rem', fontSize: '0.8rem', color: 'var(--semiont-color-neutral-400)' }}>\n {activeKnowledgeBase.label}\n </div>\n )}\n\n <div className=\"space-y-4\">\n {/* User Profile */}\n <div className=\"flex items-center gap-3\">\n <img\n src={profileImageUrl}\n alt={t('profileAlt', { name: displayName || t('user') })}\n width={48}\n height={48}\n className=\"w-12 h-12 rounded-full object-cover\"\n onError={() => setImageError(true)}\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"semiont-panel-text\">\n {displayName || t('user')}\n </div>\n {userDomain && (\n <div className=\"semiont-panel-text-secondary\">\n @{userDomain}\n </div>\n )}\n </div>\n </div>\n\n {/* Session Info */}\n <div>\n <label className=\"semiont-panel-label\">\n {t('session')}\n </label>\n <div className=\"semiont-session-box\">\n <div className=\"semiont-panel-hint\">\n {t('expiresIn', { time: sessionTimeFormatted })}\n </div>\n </div>\n </div>\n\n {/* Privileges */}\n {(isAdmin || isModerator) && (\n <div>\n <label className=\"semiont-panel-label\">\n {t('privileges')}\n </label>\n <div className=\"space-y-1\">\n {isAdmin && (\n <div className=\"semiont-privilege-badge semiont-privilege-badge--admin\">\n <span className=\"semiont-privilege-text\">\n {t('administrator')}\n </span>\n </div>\n )}\n {isModerator && (\n <div className=\"semiont-privilege-badge semiont-privilege-badge--moderator\">\n <span className=\"semiont-privilege-text\">\n {t('moderator')}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Sign Out Button */}\n <div className=\"semiont-panel-divider\">\n <button\n onClick={handleSignOut}\n className=\"semiont-signout-button\"\n >\n {t('signOut')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CheckIcon, PlusIcon, ArrowRightStartOnRectangleIcon, XMarkIcon, TrashIcon } from '@heroicons/react/24/outline';\nimport { SemiontClient, defaultProtocol, isValidHostname, type KnowledgeBase, type KbSessionStatus } from '@semiont/sdk';\nimport { HttpContentTransport, HttpTransport } from '@semiont/api-client';\nimport { baseUrl } from '@semiont/core';\nimport {\n useSemiont,\n useObservable,\n} from '@semiont/react-ui';\n\ntype T = (key: string, params?: Record<string, unknown>) => string;\n\nconst STATUS_COLORS: Record<KbSessionStatus, string> = {\n authenticated: 'var(--semiont-color-success-500, #22c55e)',\n expired: 'var(--semiont-color-warning-500, #eab308)',\n 'signed-out': 'var(--semiont-color-neutral-400, #9ca3af)',\n unreachable: 'var(--semiont-color-error-500, #ef4444)',\n};\n\nconst STATUS_KEYS: Record<KbSessionStatus, string> = {\n authenticated: 'statusConnected',\n expired: 'statusExpired',\n 'signed-out': 'statusSignedOut',\n unreachable: 'statusUnreachable',\n};\n\nfunction StatusDot({ status, t }: { status: KbSessionStatus; t: T }) {\n return (\n <span\n title={t(STATUS_KEYS[status])}\n style={{\n width: '0.5rem',\n height: '0.5rem',\n borderRadius: '50%',\n backgroundColor: STATUS_COLORS[status],\n flexShrink: 0,\n }}\n />\n );\n}\n\nfunction LoginForm({ t, onSubmit, onCancel, error, isSubmitting, autoFocus, pulsing, initialHost = 'localhost', initialPort = 4000, initialEmail = 'admin@example.com' }: {\n t: T;\n onSubmit: (host: string, port: number, protocol: 'http' | 'https', email: string, password: string) => Promise<void>;\n onCancel: () => void;\n error: string | null;\n isSubmitting: boolean;\n autoFocus?: boolean;\n pulsing?: boolean;\n initialHost?: string;\n initialPort?: number;\n initialEmail?: string;\n}) {\n const [host, setHost] = useState(initialHost);\n const [port, setPort] = useState(String(initialPort));\n const [protocol, setProtocol] = useState<'http' | 'https'>(defaultProtocol(initialHost));\n const [email, setEmail] = useState(initialEmail);\n const [password, setPassword] = useState('');\n\n const handleHostChange = (newHost: string) => {\n setHost(newHost);\n setProtocol(defaultProtocol(newHost));\n };\n\n return (\n <div\n className={pulsing ? 'semiont-panel__login-form--pulsing' : ''}\n style={{\n margin: '0.5rem',\n padding: '0.75rem',\n border: '1px solid var(--semiont-color-neutral-200, #e5e7eb)',\n borderRadius: 'var(--semiont-panel-border-radius, 0.5rem)',\n background: 'var(--semiont-bg-secondary, transparent)',\n }}\n >\n <h3 style={{ fontSize: '0.8rem', fontWeight: 600, marginBottom: '0.5rem' }}>{t('connectTitle')}</h3>\n <form onSubmit={(e) => { e.preventDefault(); if (isValidHostname(host)) onSubmit(host, parseInt(port, 10) || 4000, protocol, email, password); }} style={{ display: 'flex', flexDirection: 'column', gap: '0.5rem' }}>\n <select value={protocol} onChange={e => setProtocol(e.target.value as 'http' | 'https')} className=\"semiont-input\">\n <option value=\"http\">HTTP</option>\n <option value=\"https\">HTTPS</option>\n </select>\n <input type=\"text\" value={host} onChange={e => handleHostChange(e.target.value)} placeholder=\"Host\" className=\"semiont-input\" autoFocus={autoFocus} />\n <input type=\"number\" value={port} onChange={e => setPort(e.target.value)} placeholder=\"Port\" className=\"semiont-input\" />\n {host && !isValidHostname(host) && (\n <div style={{ color: 'var(--semiont-color-error-500, #ef4444)', fontSize: '0.75rem' }}>{t('invalidHost')}</div>\n )}\n <input type=\"email\" value={email} onChange={e => setEmail(e.target.value)} placeholder=\"Email\" className=\"semiont-input\" />\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} placeholder=\"Password\" className=\"semiont-input\" />\n {error && <div style={{ color: 'var(--semiont-color-error-500, #ef4444)', fontSize: '0.75rem' }}>{error}</div>}\n <div style={{ display: 'flex', gap: '0.5rem' }}>\n <button type=\"submit\" className=\"semiont-button semiont-button--primary\" style={{ flex: 1 }} disabled={isSubmitting || !isValidHostname(host)}>\n {isSubmitting ? t('connecting') : t('connect')}\n </button>\n <button type=\"button\" className=\"semiont-button\" onClick={onCancel}>\n <XMarkIcon style={{ width: '1rem', height: '1rem' }} />\n </button>\n </div>\n </form>\n </div>\n );\n}\n\nfunction ReauthForm({ t, kb, onSubmit, onCancel, error, isSubmitting }: {\n t: T;\n kb: KnowledgeBase;\n onSubmit: (password: string) => Promise<void>;\n onCancel: () => void;\n error: string | null;\n isSubmitting: boolean;\n}) {\n const [password, setPassword] = useState('');\n\n return (\n <form onSubmit={(e) => { e.preventDefault(); onSubmit(password); }} style={{ padding: '0.5rem 0.75rem', display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <div style={{ fontSize: '0.75rem', color: 'var(--semiont-color-neutral-400)' }}>{kb.email}</div>\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} placeholder=\"Password\" className=\"semiont-input\" style={{ fontSize: '0.8rem' }} autoFocus />\n {error && <div style={{ color: 'var(--semiont-color-error-500, #ef4444)', fontSize: '0.75rem' }}>{error}</div>}\n <div style={{ display: 'flex', gap: '0.375rem' }}>\n <button type=\"submit\" className=\"semiont-button semiont-button--primary\" style={{ flex: 1, fontSize: '0.8rem' }} disabled={isSubmitting}>\n {isSubmitting ? t('signingIn') : t('signIn')}\n </button>\n <button type=\"button\" className=\"semiont-button\" onClick={onCancel} style={{ fontSize: '0.8rem' }}>\n {t('cancel')}\n </button>\n </div>\n </form>\n );\n}\n\nasync function authenticateWithBackend(host: string, port: number, protocol: 'http' | 'https', emailStr: string, password: string): Promise<{ token: string; refreshToken: string; label: string; gitBranch?: string }> {\n const origin = `${protocol}://${host}:${port}`;\n const transport = new HttpTransport({ baseUrl: baseUrl(origin) });\n const client = new SemiontClient(transport, new HttpContentTransport(transport), transport);\n\n const authResult = await client.auth!.password(emailStr, password);\n const token = (authResult as any).token ?? (authResult as any).accessToken;\n const refreshToken = (authResult as any).refreshToken;\n if (!token) throw new Error('No access token received');\n if (!refreshToken) throw new Error('No refresh token received');\n\n let label = `${host}:${port}`;\n let gitBranch: string | undefined;\n try {\n const status = await client.admin!.status();\n if ((status as any).projectName) label = (status as any).projectName;\n if ((status as any).gitBranch) gitBranch = (status as any).gitBranch;\n } catch { /* use default label */ }\n\n return { token, refreshToken, label, ...(gitBranch ? { gitBranch } : {}) };\n}\n\nexport function KnowledgeBasePanel() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`KnowledgeBasePanel.${k}`, p as any) as string;\n const semiont = useSemiont();\n const knowledgeBases = useObservable(semiont.kbs$) ?? [];\n const activeKnowledgeBase = useObservable(semiont.activeSession$)?.kb ?? null;\n const setActiveKnowledgeBase = (id: string) => { void semiont.setActiveKb(id); };\n const addKnowledgeBase = semiont.addKb.bind(semiont);\n const removeKnowledgeBase = semiont.removeKb.bind(semiont);\n const updateKnowledgeBase = semiont.updateKb.bind(semiont);\n const signIn = (id: string, access: string, refresh: string) => { void semiont.signIn(id, access, refresh); };\n const signOut = (id: string) => { void semiont.signOut(id); };\n const [showAddForm, setShowAddForm] = useState(false);\n const [addError, setAddError] = useState<string | null>(null);\n const [addSubmitting, setAddSubmitting] = useState(false);\n const [reauthKbId, setReauthKbId] = useState<string | null>(null);\n const [reauthError, setReauthError] = useState<string | null>(null);\n const [reauthSubmitting, setReauthSubmitting] = useState(false);\n const [confirmRemoveKbId, setConfirmRemoveKbId] = useState<string | null>(null);\n const [, setTick] = useState(0);\n\n useEffect(() => {\n if (knowledgeBases.length === 0) setShowAddForm(true);\n }, [knowledgeBases.length]);\n\n useEffect(() => {\n const interval = setInterval(() => setTick(t => t + 1), 30_000);\n return () => clearInterval(interval);\n }, []);\n\n const openAddForm = () => {\n setShowAddForm(true);\n setReauthKbId(null);\n setAddError(null);\n };\n\n const handleAdd = async (host: string, port: number, protocol: 'http' | 'https', email: string, password: string) => {\n setAddError(null);\n setAddSubmitting(true);\n const existing = knowledgeBases.find(\n kb => kb.endpoint.kind === 'http' && kb.endpoint.host === host && kb.endpoint.port === port,\n );\n if (existing) {\n try {\n const { token, refreshToken, gitBranch } = await authenticateWithBackend(host, port, protocol, email, password);\n updateKnowledgeBase(existing.id, { ...(gitBranch ? { gitBranch } : {}) });\n signIn(existing.id, token, refreshToken);\n setShowAddForm(false);\n } catch (err) {\n setAddError(err instanceof Error ? err.message : String(err));\n } finally {\n setAddSubmitting(false);\n }\n return;\n }\n try {\n const { token, refreshToken, label, gitBranch } = await authenticateWithBackend(host, port, protocol, email, password);\n addKnowledgeBase(\n {\n label,\n email,\n endpoint: { kind: 'http', host, port, protocol },\n ...(gitBranch ? { gitBranch } : {}),\n },\n token,\n refreshToken,\n );\n setShowAddForm(false);\n } catch (err) {\n setAddError(err instanceof Error ? err.message : String(err));\n } finally {\n setAddSubmitting(false);\n }\n };\n\n const handleReauth = async (kbId: string, password: string) => {\n const kb = knowledgeBases.find(k => k.id === kbId);\n if (!kb) return;\n setReauthError(null);\n setReauthSubmitting(true);\n if (kb.endpoint.kind !== 'http') {\n setReauthError(`Re-auth is HTTP-only; KB endpoint kind \"${kb.endpoint.kind}\" is not supported here.`);\n setReauthSubmitting(false);\n return;\n }\n try {\n const { token, refreshToken, label, gitBranch } = await authenticateWithBackend(\n kb.endpoint.host, kb.endpoint.port, kb.endpoint.protocol, kb.email, password,\n );\n updateKnowledgeBase(kbId, { label, ...(gitBranch ? { gitBranch } : {}) });\n signIn(kbId, token, refreshToken);\n setReauthKbId(null);\n } catch (err) {\n setReauthError(err instanceof Error ? err.message : String(err));\n } finally {\n setReauthSubmitting(false);\n }\n };\n\n const handleKbClick = (kb: KnowledgeBase) => {\n const status = semiont.getKbSessionStatus(kb.id);\n if (status === 'authenticated') {\n setActiveKnowledgeBase(kb.id);\n } else {\n setReauthKbId(kb.id);\n setShowAddForm(false);\n setReauthError(null);\n }\n };\n\n return (\n <div className=\"semiont-panel\">\n <div className=\"semiont-panel-header\">\n <h2 className=\"semiont-panel-header__title\">\n <span className=\"semiont-panel-header__text\">{t('title')}</span>\n <span className=\"semiont-panel-header__count\">({knowledgeBases.length})</span>\n </h2>\n </div>\n <div className=\"semiont-panel__content\">\n <div className=\"semiont-panel__list\">\n {knowledgeBases.map((kb: KnowledgeBase) => {\n const status = semiont.getKbSessionStatus(kb.id);\n const isActive = kb.id === activeKnowledgeBase?.id;\n const isReauthing = reauthKbId === kb.id;\n\n return (\n <div key={kb.id}>\n <div\n className={`semiont-panel-item semiont-panel-item--clickable${isActive ? ' semiont-panel-item--selected' : ''}`}\n style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem', cursor: 'pointer', padding: '0.5rem 0.75rem' }}\n onClick={() => handleKbClick(kb)}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <StatusDot status={status} t={t} />\n <span className=\"semiont-panel-text\" style={{ flex: 1, fontWeight: 500 }}>{kb.label}</span>\n {isActive && (\n <CheckIcon style={{ width: '1rem', height: '1rem', color: 'var(--semiont-color-primary-500)', flexShrink: 0 }} />\n )}\n {status === 'authenticated' && (\n <button\n onClick={(e) => { e.stopPropagation(); signOut(kb.id); }}\n title={t('signOut')}\n style={{ background: 'none', border: 'none', cursor: 'pointer', padding: '0.125rem', color: 'var(--semiont-color-neutral-400)' }}\n >\n <ArrowRightStartOnRectangleIcon style={{ width: '0.875rem', height: '0.875rem' }} />\n </button>\n )}\n <button\n onClick={(e) => { e.stopPropagation(); setConfirmRemoveKbId(kb.id); }}\n title={t('remove')}\n style={{ background: 'none', border: 'none', cursor: 'pointer', padding: '0.125rem', color: 'var(--semiont-color-neutral-400)' }}\n >\n <TrashIcon style={{ width: '0.875rem', height: '0.875rem' }} />\n </button>\n </div>\n <span className=\"semiont-panel-text-secondary\" style={{ fontSize: '0.7rem', paddingLeft: '1rem' }}>\n {kb.endpoint.kind === 'http'\n ? `${kb.endpoint.host}:${kb.endpoint.port}`\n : `local:${kb.endpoint.kbId}`}\n {kb.gitBranch ? ` · ${kb.gitBranch}` : ''}\n </span>\n </div>\n {confirmRemoveKbId === kb.id && (\n <div style={{\n padding: '0.5rem 0.75rem',\n fontSize: '0.8rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n background: 'var(--semiont-bg-secondary, #f9fafb)',\n borderBottom: '1px solid var(--semiont-color-neutral-200, #e5e7eb)',\n }}>\n <span style={{ flex: 1, color: 'var(--semiont-color-neutral-500)' }}>{t('removeConfirm', { label: kb.label })}</span>\n <button\n onClick={() => { removeKnowledgeBase(kb.id); setConfirmRemoveKbId(null); }}\n className=\"semiont-button\"\n style={{ fontSize: '0.75rem', padding: '0.2rem 0.5rem', color: 'var(--semiont-color-error-500, #ef4444)' }}\n >\n {t('remove')}\n </button>\n <button\n onClick={() => setConfirmRemoveKbId(null)}\n className=\"semiont-button\"\n style={{ fontSize: '0.75rem', padding: '0.2rem 0.5rem' }}\n >\n {t('cancel')}\n </button>\n </div>\n )}\n {isReauthing && (\n <ReauthForm\n t={t}\n kb={kb}\n onSubmit={(password) => handleReauth(kb.id, password)}\n onCancel={() => setReauthKbId(null)}\n error={reauthError}\n isSubmitting={reauthSubmitting}\n />\n )}\n </div>\n );\n })}\n </div>\n\n {showAddForm && (\n <LoginForm\n t={t}\n onSubmit={handleAdd}\n onCancel={() => setShowAddForm(false)}\n error={addError}\n isSubmitting={addSubmitting}\n autoFocus={knowledgeBases.length === 0}\n pulsing={knowledgeBases.length === 0}\n />\n )}\n </div>\n\n {!showAddForm && (\n <div className=\"semiont-panel-footer\">\n <button\n onClick={openAddForm}\n className=\"semiont-panel-item semiont-panel-item--clickable\"\n style={{ width: '100%', display: 'flex', alignItems: 'center', gap: '0.5rem', color: 'var(--semiont-color-primary-600)' }}\n >\n <PlusIcon style={{ width: '1rem', height: '1rem', flexShrink: 0 }} />\n <span className=\"semiont-panel-text\" style={{ color: 'inherit' }}>{t('addKnowledgeBase')}</span>\n </button>\n </div>\n )}\n </div>\n );\n}\n","import React, { useTransition, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n SettingsPanel,\n ResizeHandle,\n usePanelWidth,\n useEventSubscriptions,\n useSemiont,\n useObservable,\n useHoverDelay,\n} from '@semiont/react-ui';\nimport { UserPanel } from '../UserPanel';\nimport { KnowledgeBasePanel } from '../KnowledgeBasePanel';\nimport { useLocale } from '@/i18n/routing';\nimport { usePathname, useRouter } from '@/i18n/routing';\nimport { COMMON_PANELS } from '@semiont/react-ui';\nimport type { ToolbarPanelType } from '@semiont/react-ui';\n\ninterface ToolbarPanelsProps {\n activePanel: ToolbarPanelType | null;\n /** Theme setting */\n theme: 'light' | 'dark' | 'system';\n /** Line numbers setting */\n showLineNumbers: boolean;\n /** Custom panel content for context-specific panels */\n children?: React.ReactNode;\n}\n\n/**\n * Renders the toolbar panel container with common panels (user, settings)\n * and any context-specific panels passed as children.\n *\n * Settings changes are handled via GlobalSettingsEventBus - no callbacks needed.\n *\n * @example\n * // Simple context (compose, discover, moderate, admin pages)\n * <ToolbarPanels\n * activePanel={activePanel}\n * theme={theme}\n * showLineNumbers={showLineNumbers}\n * />\n *\n * @example\n * // Document context with custom panels\n * <ToolbarPanels\n * activePanel={activePanel}\n * theme={theme}\n * showLineNumbers={showLineNumbers}\n * >\n * {activePanel === 'annotations' && <UnifiedAnnotationsPanel ... />}\n * {activePanel === 'history' && <AnnotationHistory ... />}\n * {activePanel === 'info' && <ResourceInfoPanel ... />}\n * {activePanel === 'collaboration' && <CollaborationPanel ... />}\n * {activePanel === 'jsonld' && <JsonLdPanel ... />}\n * </ToolbarPanels>\n */\nexport function ToolbarPanels({\n activePanel,\n theme,\n showLineNumbers,\n children\n}: ToolbarPanelsProps) {\n // Source hover-delay from the shared hook so every page that mounts\n // ToolbarPanels gets the live value without prop-drilling. Previously\n // each page passed `hoverDelayMs` through as a prop; pages that forgot\n // (Discover, Admin, Moderation) rendered the Settings panel with\n // `undefined`, which surfaced as `{undefined}ms delay` after the\n // translation interpolation ran.\n const { hoverDelayMs } = useHoverDelay();\n const { t: _t } = useTranslation();\n const session = useObservable(useSemiont().activeSession$);\n const user = useObservable(session?.user$);\n const isAuthenticated = !!user;\n const locale = useLocale();\n const router = useRouter();\n const pathname = usePathname();\n const [isPending, startTransition] = useTransition();\n\n // Panel width management with localStorage persistence\n const { width, setWidth, minWidth, maxWidth } = usePanelWidth();\n\n // Handle locale change events\n const handleLocaleChanged = useCallback(({ locale: newLocale }: { locale: string }) => {\n if (!pathname) return;\n\n startTransition(() => {\n // The router from @/i18n/routing is locale-aware and will handle the locale prefix\n router.replace(pathname, { locale: newLocale });\n });\n }, [pathname, router, startTransition]);\n\n // Subscribe to locale change events\n useEventSubscriptions({\n 'settings:locale-changed': handleLocaleChanged,\n });\n\n // Don't render container if no panel is active\n if (!activePanel) {\n return null;\n }\n\n // In simple context (no children), only user and settings panels are valid.\n // If a resource-specific panel is still active from a previous route, hide the container.\n if (!children && !COMMON_PANELS.includes(activePanel)) {\n return null;\n }\n\n return (\n <div className=\"semiont-toolbar-panels\" style={{ width: `${width}px`, position: 'relative' }}>\n {/* Resize handle on left edge */}\n <ResizeHandle\n onResize={setWidth}\n minWidth={minWidth}\n maxWidth={maxWidth}\n position=\"left\"\n ariaLabel=\"Resize right panel\"\n />\n\n {/* Custom context-specific panels */}\n <div className=\"semiont-toolbar-panels__content\">\n {children}\n\n {/* Knowledge Base Panel - common to all contexts */}\n {activePanel === 'knowledge-base' && (\n <KnowledgeBasePanel />\n )}\n\n {/* User Panel - requires authentication */}\n {activePanel === 'user' && (\n isAuthenticated ? (\n <UserPanel />\n ) : (\n <div className=\"semiont-panel\">\n <div className=\"semiont-panel-header\">\n <h2 className=\"semiont-panel-header__title\">\n <span className=\"semiont-panel-header__text\">{_t('UserPanel.account')}</span>\n </h2>\n </div>\n <div className=\"semiont-panel__content\" style={{ padding: '1rem', textAlign: 'center' }}>\n <p style={{ color: 'var(--semiont-color-neutral-400)', fontSize: '0.85rem', lineHeight: 1.5 }}>\n {_t('AccountPanel.notAuthenticated')}\n </p>\n </div>\n </div>\n )\n )}\n\n {/* Settings Panel - common to all contexts */}\n {activePanel === 'settings' && (\n <SettingsPanel\n showLineNumbers={showLineNumbers}\n theme={theme}\n hoverDelayMs={hoverDelayMs}\n locale={locale}\n isPendingLocaleChange={isPending}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["ArrowRightStartOnRectangleIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","CheckIcon","PlusIcon","FALLBACK_AVATAR","UserPanel","_t","useTranslation","t","p","semiont","useSemiont","session","useObservable","user","activeKnowledgeBase","displayName","_a","avatarUrl","userDomain","_b","isAdmin","isModerator","apiClient","sessionStateUnit","useStateUnit","createSessionStateUnit","router","useRouter","imageError","setImageError","useState","timeRemaining","useSessionExpiry","sessionTimeFormatted","formatTime","profileImageUrl","sanitized","sanitizeImageURL","handleSignOut","jsxs","jsx","STATUS_COLORS","STATUS_KEYS","StatusDot","status","LoginForm","onSubmit","onCancel","error","isSubmitting","autoFocus","pulsing","initialHost","initialPort","initialEmail","host","setHost","port","setPort","protocol","setProtocol","defaultProtocol","email","setEmail","password","setPassword","handleHostChange","newHost","e","isValidHostname","XMarkIcon","ReauthForm","kb","authenticateWithBackend","emailStr","origin","transport","HttpTransport","baseUrl","client","SemiontClient","HttpContentTransport","authResult","token","refreshToken","label","gitBranch","KnowledgeBasePanel","k","knowledgeBases","setActiveKnowledgeBase","id","addKnowledgeBase","removeKnowledgeBase","updateKnowledgeBase","signIn","access","refresh","signOut","showAddForm","setShowAddForm","addError","setAddError","addSubmitting","setAddSubmitting","reauthKbId","setReauthKbId","reauthError","setReauthError","reauthSubmitting","setReauthSubmitting","confirmRemoveKbId","setConfirmRemoveKbId","setTick","useEffect","interval","openAddForm","handleAdd","existing","err","handleReauth","kbId","handleKbClick","isActive","isReauthing","TrashIcon","ToolbarPanels","activePanel","theme","showLineNumbers","children","hoverDelayMs","useHoverDelay","isAuthenticated","locale","useLocale","pathname","usePathname","isPending","startTransition","useTransition","width","setWidth","minWidth","maxWidth","usePanelWidth","handleLocaleChanged","useCallback","newLocale","useEventSubscriptions","COMMON_PANELS","ResizeHandle","SettingsPanel"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./vendor-DJo4KD8w.js";function o({title:r,titleId:t,...a},n){return e.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:n,"aria-labelledby":t},a),r?e.createElement("title",{id:t},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"}))}const i=e.forwardRef(o);function s({title:r,titleId:t,...a},n){return e.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:n,"aria-labelledby":t},a),r?e.createElement("title",{id:t},r):null,e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18 18 6M6 6l12 12"}))}const l=e.forwardRef(s);export{l as F,i as a};
2
- //# sourceMappingURL=XMarkIcon-KMKD47CF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XMarkIcon-KMKD47CF.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/TrashIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js"],"sourcesContent":["import * as React from \"react\";\nfunction TrashIcon({\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: \"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(TrashIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction XMarkIcon({\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: \"M6 18 18 6M6 6l12 12\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(XMarkIcon);\nexport default ForwardRef;"],"names":["TrashIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","XMarkIcon"],"mappings":"yCACA,SAASA,EAAU,CACjB,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,+ZACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBP,CAAS,ECvB3D,SAASQ,EAAU,CACjB,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,sBACP,CAAG,CAAC,CACJ,CACK,MAACC,EAA2BC,EAAAA,WAAiBC,CAAS","x_google_ignoreList":[0,1]}