@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
package/dist/cli.mjs CHANGED
@@ -17784,7 +17784,6 @@ var init_dist = __esm({
17784
17784
  storageUri: data.storageUri,
17785
17785
  ...data.entityTypes ? { entityTypes: data.entityTypes } : {},
17786
17786
  ...data.language ? { language: data.language } : {},
17787
- ...data.creationMethod ? { creationMethod: data.creationMethod } : {},
17788
17787
  ...data.sourceAnnotationId ? { sourceAnnotationId: data.sourceAnnotationId } : {},
17789
17788
  ...data.sourceResourceId ? { sourceResourceId: data.sourceResourceId } : {},
17790
17789
  ...data.generationPrompt ? { generationPrompt: data.generationPrompt } : {},
@@ -33051,7 +33050,7 @@ var require_package = __commonJS({
33051
33050
  "package.json"(exports, module) {
33052
33051
  module.exports = {
33053
33052
  name: "@semiont/cli",
33054
- version: "0.5.3",
33053
+ version: "0.5.4",
33055
33054
  description: "Semiont CLI - Unified environment management tool",
33056
33055
  _comment: "AWS SDK dependencies (@aws-sdk/*) are only used by platforms/aws",
33057
33056
  type: "module",
@@ -33098,13 +33097,13 @@ var require_package = __commonJS({
33098
33097
  "test:watch:unit": "vitest --watch --config vitest.config.unit.ts"
33099
33098
  },
33100
33099
  dependencies: {
33101
- "@semiont/api-client": "0.5.3",
33102
- "@semiont/content": "0.5.3",
33103
- "@semiont/core": "0.5.3",
33104
- "@semiont/event-sourcing": "0.5.3",
33105
- "@semiont/graph": "0.5.3",
33106
- "@semiont/sdk": "0.5.3",
33107
- "@semiont/make-meaning": "0.5.3",
33100
+ "@semiont/api-client": "0.5.4",
33101
+ "@semiont/content": "0.5.4",
33102
+ "@semiont/core": "0.5.4",
33103
+ "@semiont/event-sourcing": "0.5.4",
33104
+ "@semiont/graph": "0.5.4",
33105
+ "@semiont/sdk": "0.5.4",
33106
+ "@semiont/make-meaning": "0.5.4",
33108
33107
  arg: "^5.0.2",
33109
33108
  argon2: "^0.44.0",
33110
33109
  express: "^5.2.1",
@@ -33123,7 +33122,7 @@ var require_package = __commonJS({
33123
33122
  "@types/react": "^19.2.14",
33124
33123
  "@vitest/coverage-v8": "^4.1.0",
33125
33124
  chalk: "^5.3.0",
33126
- typescript: "^5.9.2"
33125
+ typescript: "^6.0.2"
33127
33126
  },
33128
33127
  optionalDependencies: {
33129
33128
  "@aws-sdk/client-cloudformation": "^3.600.0",
@@ -38116,7 +38115,7 @@ async function generateGlobalHelp() {
38116
38115
  }
38117
38116
 
38118
38117
  // src/cli.ts
38119
- var VERSION = "0.5.3";
38118
+ var VERSION = "0.5.4";
38120
38119
  function printVersion() {
38121
38120
  console.log(`Semiont CLI v${VERSION}`);
38122
38121
  }
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t}from"./i18n-B53Yefbh.js";var n=e(t());function r({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.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`}))}var i=n.forwardRef(r);export{i as t};
2
+ //# sourceMappingURL=ArrowsRightLeftIcon-eQUXtsyS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrowsRightLeftIcon-eQUXtsyS.js","names":[],"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;"],"x_google_ignoreList":[0],"mappings":"uGACA,SAAS,EAAoB,CAC3B,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,6EACJ,CAAC,CAAC,CAEL,IAAM,EAA2B,EAAM,WAAW,EAAoB"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t}from"./i18n-B53Yefbh.js";var n=e(t());function r({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5`}))}var i=n.forwardRef(r);function a({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M15.75 19.5 8.25 12l7.5-7.5`}))}var o=n.forwardRef(a);export{i as n,o as t};
2
+ //# sourceMappingURL=ChevronLeftIcon-QLs1eT1j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChevronLeftIcon-QLs1eT1j.js","names":["ForwardRef"],"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;"],"x_google_ignoreList":[0,1],"mappings":"uGACA,SAAS,EAAU,CACjB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,+CACJ,CAAC,CAAC,CAEL,IAAMA,EAA2B,EAAM,WAAW,EAAU,CCvB5D,SAAS,EAAgB,CACvB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,8BACJ,CAAC,CAAC,CAEL,IAAM,EAA2B,EAAM,WAAW,EAAgB"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t}from"./i18n-B53Yefbh.js";var n=e(t());function r({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.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`}))}var i=n.forwardRef(r);export{i as t};
2
+ //# sourceMappingURL=CommandLineIcon-BEeeWFhQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandLineIcon-BEeeWFhQ.js","names":[],"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;"],"x_google_ignoreList":[0],"mappings":"uGACA,SAAS,EAAgB,CACvB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,wJACJ,CAAC,CAAC,CAEL,IAAM,EAA2B,EAAM,WAAW,EAAgB"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t,n}from"./i18n-B53Yefbh.js";import{t as r}from"./vendor-0HjOURbh.js";import{c as i,i as a,r as o,s,u as c}from"./KeyboardShortcutsContext-BRLeqQUj.js";import{n as l,t as u}from"./XMarkIcon-CddZGiiz.js";var d=e(t());function f({title:e,titleId:t,...n},r){return d.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:r,"aria-labelledby":t},n),e?d.createElement(`title`,{id:t},e):null,d.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`}))}var p=d.forwardRef(f);function m({title:e,titleId:t,...n},r){return d.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:r,"aria-labelledby":t},n),e?d.createElement(`title`,{id:t},e):null,d.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`}))}var h=d.forwardRef(m);function g({title:e,titleId:t,...n},r){return d.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:r,"aria-labelledby":t},n),e?d.createElement(`title`,{id:t},e):null,d.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`}))}var _=d.forwardRef(g),v=r();function y({isOpen:e,onClose:t}){let{t:r}=n(),f=(e,t)=>r(`CookiePreferences.${e}`,t),[m,g]=(0,d.useState)(null),[y,b]=(0,d.useState)(!1),[x,S]=(0,d.useState)(!1),C=(0,d.useRef)(t);(0,d.useEffect)(()=>{C.current=t}),(0,d.useEffect)(()=>{e&&g(s()||{necessary:!0,analytics:!1,marketing:!1,preferences:!1,timestamp:new Date().toISOString(),version:`1.0`})},[e]),(0,d.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&C.current()};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e]);let w=async()=>{m&&(b(!0),i(m),b(!1),t())},T=e=>{e===`necessary`||!m||g(t=>t?{...t,[e]:!t[e]}:null)};return!e||!m?null:(0,v.jsxs)(`div`,{className:`fixed inset-0 z-50 overflow-y-auto`,children:[(0,v.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:[(0,v.jsx)(`div`,{className:`fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75`,onClick:t}),(0,v.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:[(0,v.jsx)(`button`,{onClick:t,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:(0,v.jsx)(u,{className:`h-6 w-6`})}),(0,v.jsxs)(`div`,{className:`sm:flex sm:items-start`,children:[(0,v.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:(0,v.jsx)(h,{className:`h-6 w-6 text-blue-600`})}),(0,v.jsxs)(`div`,{className:`mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8`,children:[(0,v.jsx)(`h3`,{className:`text-lg leading-6 font-medium text-gray-900`,children:f(`title`)}),(0,v.jsx)(`div`,{className:`mt-2`,children:(0,v.jsx)(`p`,{className:`text-sm text-gray-500`,children:f(`description`)})})]})]}),(0,v.jsx)(`div`,{className:`mt-6`,children:(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsxs)(`div`,{className:`bg-gray-50 rounded-lg p-4`,children:[(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_,{className:`h-5 w-5 text-green-500 mr-2`}),(0,v.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:f(`currentSettings`)})]}),(0,v.jsxs)(`div`,{className:`mt-2 text-xs text-gray-600`,children:[(0,v.jsx)(`p`,{children:f(`lastUpdated`,{date:new Date(m.timestamp).toLocaleDateString()})}),(0,v.jsx)(`p`,{children:f(`version`,{version:m.version})})]})]}),(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(`h4`,{className:`text-base font-medium text-gray-900`,children:f(`cookieCategories`)}),c.map(e=>(0,v.jsx)(`div`,{className:`border border-gray-200 rounded-lg p-4`,children:(0,v.jsx)(`div`,{className:`flex items-start justify-between`,children:(0,v.jsxs)(`div`,{className:`flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(`input`,{id:`pref-${e.id}`,type:`checkbox`,checked:m[e.id]||!1,onChange:()=>T(e.id),disabled:e.required||y,className:`h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50`}),(0,v.jsxs)(`label`,{htmlFor:`pref-${e.id}`,className:`ml-3 text-sm font-medium text-gray-900 cursor-pointer`,children:[e.name,e.required&&(0,v.jsx)(`span`,{className:`text-xs text-gray-500 ml-1`,children:f(`required`)})]})]}),(0,v.jsx)(`p`,{className:`mt-1 text-sm text-gray-600`,children:e.description}),(0,v.jsxs)(`details`,{className:`mt-2`,children:[(0,v.jsx)(`summary`,{className:`text-xs text-blue-600 cursor-pointer hover:text-blue-800`,children:f(`viewCookies`,{count:e.cookies.length})}),(0,v.jsx)(`div`,{className:`mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2`,children:(0,v.jsx)(`ul`,{className:`list-disc list-inside space-y-1`,children:e.cookies.map(e=>(0,v.jsx)(`li`,{children:e},e))})})]})]})})},e.id))]}),(0,v.jsxs)(`div`,{className:`border-t border-gray-200 pt-6`,children:[(0,v.jsx)(`h4`,{className:`text-base font-medium text-gray-900 mb-4`,children:f(`dataManagement`)}),(0,v.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,v.jsxs)(`button`,{onClick:()=>{let e=a(),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`semiont-user-data-${new Date().toISOString().split(`T`)[0]}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(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`,children:[(0,v.jsx)(p,{className:`h-4 w-4 mr-2`}),f(`exportMyData`)]}),(0,v.jsxs)(`button`,{onClick:()=>S(!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:[(0,v.jsx)(l,{className:`h-4 w-4 mr-2`}),f(`deleteAllData`)]})]}),(0,v.jsx)(`p`,{className:`mt-2 text-xs text-gray-500`,children:f(`dataManagementDescription`)})]})]})}),(0,v.jsxs)(`div`,{className:`mt-6 flex flex-wrap gap-2 justify-center`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e?{...e,necessary:!0,analytics:!1,marketing:!1,preferences:!1}:null)},disabled:y,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:f(`rejectAll`)}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>{g(e=>e?{...e,necessary:!0,analytics:!0,marketing:!0,preferences:!0}:null)},disabled:y,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:f(`acceptAll`)})]}),(0,v.jsxs)(`div`,{className:`mt-6 sm:flex sm:flex-row-reverse`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:w,disabled:y,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:f(y?`saving`:`saveChanges`)}),(0,v.jsx)(`button`,{type:`button`,onClick:t,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:f(`cancel`)})]})]})]}),x&&(0,v.jsx)(`div`,{className:`fixed inset-0 z-60 overflow-y-auto`,children:(0,v.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:[(0,v.jsx)(`div`,{className:`fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75`}),(0,v.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:[(0,v.jsxs)(`div`,{className:`sm:flex sm:items-start`,children:[(0,v.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:(0,v.jsx)(l,{className:`h-6 w-6 text-red-600`})}),(0,v.jsxs)(`div`,{className:`mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left`,children:[(0,v.jsx)(`h3`,{className:`text-lg leading-6 font-medium text-gray-900`,children:f(`deleteConfirmTitle`)}),(0,v.jsx)(`div`,{className:`mt-2`,children:(0,v.jsx)(`p`,{className:`text-sm text-gray-500`,children:f(`deleteConfirmDescription`)})})]})]}),(0,v.jsxs)(`div`,{className:`mt-5 sm:mt-4 sm:flex sm:flex-row-reverse`,children:[(0,v.jsx)(`button`,{type:`button`,onClick:()=>{o()},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:f(`deleteAllData`)}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>S(!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:f(`cancel`)})]})]})]})})]})}export{_ as n,y as t};
2
+ //# sourceMappingURL=CookiePreferences-CMgprW9V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CookiePreferences-CMgprW9V.js","names":["ForwardRef","ForwardRef"],"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;"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t,n}from"./i18n-B53Yefbh.js";import{t as r}from"./vendor-0HjOURbh.js";import{C as i,K as a,Y as o,d as s}from"./index-DjtRDlfn.js";import{i as c}from"./routing-Bcj1FhkC.js";var l=[{id:`necessary`,name:`Strictly Necessary`,description:`These cookies are essential for the website to function properly. They enable core functionality such as security, network management, and accessibility.`,required:!0,cookies:[`semiont-token`,`consent-preferences`]},{id:`analytics`,name:`Analytics`,description:`These cookies help us understand how visitors interact with our website by collecting and reporting information anonymously.`,required:!1,cookies:[`_ga`,`_ga_*`,`_gid`,`_gat`,`lighthouse-*`]},{id:`marketing`,name:`Marketing`,description:`These cookies are used to track visitors across websites to display relevant advertisements and measure campaign effectiveness.`,required:!1,cookies:[`_fbp`,`_fbc`,`fr`,`ads-*`]},{id:`preferences`,name:`Preferences`,description:`These cookies remember your choices and preferences to provide a more personalized experience.`,required:!1,cookies:[`theme-preference`,`language-preference`,`ui-settings`]}],u=`semiont-cookie-consent`,d={necessary:!0,analytics:!1,marketing:!1,preferences:!1,timestamp:new Date().toISOString(),version:`1.0`},f=e=>{typeof window>`u`||l.forEach(t=>{t.required||e[t.id]||t.cookies.forEach(e=>{if(e.includes(`*`)){let t=e.replace(`*`,``);document.cookie.split(`;`).forEach(e=>{let n=e.split(`=`)[0]?.trim();n&&n.startsWith(t)&&p(n)})}else p(e)})})},p=e=>{document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`,document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.location.hostname}`;let t=window.location.hostname.split(`.`).slice(-2).join(`.`);document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.${t}`},m=()=>{if(typeof window>`u`)return null;try{let e=localStorage.getItem(u);if(!e)return null;let t=JSON.parse(e);return t.version===`1.0`?t:null}catch(e){return console.warn(`Failed to parse cookie consent:`,e),null}},h=e=>{if(typeof window>`u`)return;let t={...d,...e,necessary:!0,timestamp:new Date().toISOString(),version:`1.0`};try{localStorage.setItem(u,JSON.stringify(t)),f(t),window.dispatchEvent(new CustomEvent(`cookieConsentChanged`,{detail:t}))}catch(e){console.error(`Failed to save cookie consent:`,e)}},g=()=>{let e=m();if(!e)return!1;let t=new Date(e.timestamp),n=new Date;return n.setMonth(n.getMonth()-13),t>n},_=()=>typeof window>`u`?!1:!g(),v=async()=>{try{let e=Intl.DateTimeFormat().resolvedOptions().timeZone;return e.includes(`Europe/`)?`EU`:e.includes(`America/Los_Angeles`)||e.includes(`America/Vancouver`)?`CA`:e.includes(`America/`)?`US`:`OTHER`}catch{return`OTHER`}},y=async()=>await v()===`CA`,b=async()=>await v()===`EU`,x=()=>{if(typeof window>`u`)return{};let e={};document.cookie.split(`;`).forEach(t=>{let[n,r]=t.trim().split(`=`);n&&r&&(e[`cookie_${n}`]=decodeURIComponent(r))});for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);n&&(e[`localStorage_${n}`]=localStorage.getItem(n)||``)}for(let t=0;t<sessionStorage.length;t++){let n=sessionStorage.key(t);n&&(e[`sessionStorage_${n}`]=sessionStorage.getItem(n)||``)}return e},S=()=>{typeof window>`u`||(localStorage.clear(),sessionStorage.clear(),document.cookie.split(`;`).forEach(e=>{let t=e.split(`=`)[0]?.trim();t&&p(t)}),window.location.reload())},C=e(t()),w=r();function T({isOpen:e,onClose:t}){let r=c(),{t:a}=n(),o=(e,t)=>a(`Search.${e}`,t);return(0,w.jsx)(i,{isOpen:e,onClose:t,onNavigate:(e,t)=>{e===`resource`?r.push(`/know/resource/${encodeURIComponent(t)}`):r.push(`/know/entity/${t}`)},translations:{placeholder:o(`placeholder`),searching:o(`searching`),noResults:o(`noResults`),startTyping:o(`startTyping`),navigate:o(`navigate`),select:o(`select`),close:o(`close`),enter:o(`enter`),esc:o(`esc`)}})}var E=(0,C.createContext)(null);function D({children:e}){let t=c(),[n,r]=(0,C.useState)(!1),[i,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)([]),f=(0,C.useCallback)(()=>{r(!0)},[]),p=(0,C.useCallback)(()=>{l(!0)},[]),m=(0,C.useCallback)(()=>{r(!1),l(!1),u.forEach(e=>e()),d([])},[u]);o([{key:`k`,ctrlOrCmd:!0,handler:()=>{f()},description:`Open global search`},{key:`n`,ctrlOrCmd:!0,handler:()=>{t.push(`/know/compose`)},description:`Create new resource`},{key:`/`,handler:()=>{f()},description:`Open global search (alternative)`},{key:`?`,shift:!0,handler:()=>{p()},description:`Show keyboard shortcuts help`}]),a(`Escape`,m,300);let h={openGlobalSearch:f,openKeyboardHelp:p,closeAllOverlays:m};return(0,w.jsxs)(E.Provider,{value:h,children:[e,n&&(0,w.jsx)(T,{isOpen:n,onClose:()=>r(!1)}),i&&(0,w.jsx)(s,{isOpen:i,onClose:()=>l(!1)})]})}export{y as a,h as c,x as i,_ as l,D as n,b as o,S as r,m as s,E as t,l as u};
2
+ //# sourceMappingURL=KeyboardShortcutsContext-BRLeqQUj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyboardShortcutsContext-BRLeqQUj.js","names":[],"sources":["../../src/lib/cookies/constants.ts","../../src/lib/cookies/cleanup.ts","../../src/lib/cookies/consent.ts","../../src/lib/cookies/privacy.ts","../../src/components/modals/GlobalSearchModal.tsx","../../src/contexts/KeyboardShortcutsContext.tsx"],"sourcesContent":["import type { CookieCategory, CookieConsent } from './types';\n\n// Cookie categories with descriptions\nexport const COOKIE_CATEGORIES: CookieCategory[] = [\n {\n id: 'necessary',\n name: 'Strictly Necessary',\n description: 'These cookies are essential for the website to function properly. They enable core functionality such as security, network management, and accessibility.',\n required: true,\n cookies: ['semiont-token', 'consent-preferences']\n },\n {\n id: 'analytics',\n name: 'Analytics',\n description: 'These cookies help us understand how visitors interact with our website by collecting and reporting information anonymously.',\n required: false,\n cookies: ['_ga', '_ga_*', '_gid', '_gat', 'lighthouse-*']\n },\n {\n id: 'marketing',\n name: 'Marketing',\n description: 'These cookies are used to track visitors across websites to display relevant advertisements and measure campaign effectiveness.',\n required: false,\n cookies: ['_fbp', '_fbc', 'fr', 'ads-*']\n },\n {\n id: 'preferences',\n name: 'Preferences',\n description: 'These cookies remember your choices and preferences to provide a more personalized experience.',\n required: false,\n cookies: ['theme-preference', 'language-preference', 'ui-settings']\n }\n];\n\n// Current consent version (increment when privacy policy changes)\nexport const CONSENT_VERSION = '1.0';\n\n// Cookie names\nexport const CONSENT_COOKIE_NAME = 'semiont-cookie-consent';\nexport const PREFERENCES_COOKIE_NAME = 'semiont-cookie-preferences';\n\n// Default consent state\nexport const DEFAULT_CONSENT: CookieConsent = {\n necessary: true, // Always true, required for functionality\n analytics: false,\n marketing: false,\n preferences: false,\n timestamp: new Date().toISOString(),\n version: CONSENT_VERSION\n};\n","import type { CookieConsent } from './types';\nimport { COOKIE_CATEGORIES } from './constants';\n\n// Clean up cookies based on consent\nexport const cleanupCookies = (consent: CookieConsent): void => {\n if (typeof window === 'undefined') return;\n\n COOKIE_CATEGORIES.forEach(category => {\n if (category.required) return; // Never clean up required cookies\n\n const hasConsent = consent[category.id];\n if (!hasConsent) {\n // Remove cookies for this category\n category.cookies.forEach(cookieName => {\n if (cookieName.includes('*')) {\n // Handle wildcard cookies\n const prefix = cookieName.replace('*', '');\n document.cookie.split(';').forEach(cookie => {\n const name = cookie.split('=')[0]?.trim();\n if (name && name.startsWith(prefix)) {\n deleteCookie(name);\n }\n });\n } else {\n deleteCookie(cookieName);\n }\n });\n }\n });\n};\n\n// Delete a specific cookie\nexport const deleteCookie = (name: string): void => {\n // Delete for current domain\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;\n // Delete for parent domain\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${window.location.hostname}`;\n // Delete for root domain\n const rootDomain = window.location.hostname.split('.').slice(-2).join('.');\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.${rootDomain}`;\n};\n","import type { CookieConsent } from './types';\nimport { CONSENT_COOKIE_NAME, CONSENT_VERSION, DEFAULT_CONSENT } from './constants';\nimport { cleanupCookies } from './cleanup';\n\nexport const getCookieConsent = (): CookieConsent | null => {\n if (typeof window === 'undefined') return null;\n\n try {\n const consent = localStorage.getItem(CONSENT_COOKIE_NAME);\n if (!consent) return null;\n\n const parsed = JSON.parse(consent) as CookieConsent;\n\n // Check if consent is for current version\n if (parsed.version !== CONSENT_VERSION) {\n return null; // Force re-consent for new version\n }\n\n return parsed;\n } catch (error) {\n console.warn('Failed to parse cookie consent:', error);\n return null;\n }\n};\n\nexport const setCookieConsent = (consent: Partial<CookieConsent>): void => {\n if (typeof window === 'undefined') return;\n\n const fullConsent: CookieConsent = {\n ...DEFAULT_CONSENT,\n ...consent,\n necessary: true, // Always true\n timestamp: new Date().toISOString(),\n version: CONSENT_VERSION\n };\n\n try {\n localStorage.setItem(CONSENT_COOKIE_NAME, JSON.stringify(fullConsent));\n\n // Clean up cookies based on consent\n cleanupCookies(fullConsent);\n\n // Dispatch custom event for components to react to consent changes\n window.dispatchEvent(new CustomEvent('cookieConsentChanged', {\n detail: fullConsent\n }));\n } catch (error) {\n console.error('Failed to save cookie consent:', error);\n }\n};\n\nexport const hasValidConsent = (): boolean => {\n const consent = getCookieConsent();\n if (!consent) return false;\n\n // Check if consent is less than 13 months old (GDPR requirement)\n const consentDate = new Date(consent.timestamp);\n const thirteenMonthsAgo = new Date();\n thirteenMonthsAgo.setMonth(thirteenMonthsAgo.getMonth() - 13);\n\n return consentDate > thirteenMonthsAgo;\n};\n\nexport const shouldShowBanner = (): boolean => {\n if (typeof window === 'undefined') return false;\n return !hasValidConsent();\n};\n","import { deleteCookie } from './cleanup';\n\n// Get user's location for CCPA vs GDPR detection (simplified)\nexport const getUserLocation = async (): Promise<'EU' | 'CA' | 'US' | 'OTHER'> => {\n try {\n // In a real implementation, you'd use a geolocation service\n // For now, we'll detect based on timezone as a rough approximation\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n if (timezone.includes('Europe/')) return 'EU';\n if (timezone.includes('America/Los_Angeles') || timezone.includes('America/Vancouver')) return 'CA';\n if (timezone.includes('America/')) return 'US';\n\n return 'OTHER';\n } catch {\n return 'OTHER';\n }\n};\n\n// Check if CCPA applies (California residents)\nexport const isCCPAApplicable = async (): Promise<boolean> => {\n const location = await getUserLocation();\n return location === 'CA';\n};\n\n// Check if GDPR applies (EU residents)\nexport const isGDPRApplicable = async (): Promise<boolean> => {\n const location = await getUserLocation();\n return location === 'EU';\n};\n\n// Export all cookies currently set\nexport const exportUserData = (): Record<string, string> => {\n if (typeof window === 'undefined') return {};\n\n const data: Record<string, string> = {};\n\n // Get all cookies\n document.cookie.split(';').forEach(cookie => {\n const [name, value] = cookie.trim().split('=');\n if (name && value) {\n data[`cookie_${name}`] = decodeURIComponent(value);\n }\n });\n\n // Get localStorage data\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key) {\n data[`localStorage_${key}`] = localStorage.getItem(key) || '';\n }\n }\n\n // Get sessionStorage data\n for (let i = 0; i < sessionStorage.length; i++) {\n const key = sessionStorage.key(i);\n if (key) {\n data[`sessionStorage_${key}`] = sessionStorage.getItem(key) || '';\n }\n }\n\n return data;\n};\n\n// Delete all user data (GDPR right to be forgotten)\nexport const deleteAllUserData = (): void => {\n if (typeof window === 'undefined') return;\n\n // Clear all localStorage\n localStorage.clear();\n\n // Clear all sessionStorage\n sessionStorage.clear();\n\n // Delete all cookies\n document.cookie.split(';').forEach(cookie => {\n const name = cookie.split('=')[0]?.trim();\n if (name) {\n deleteCookie(name);\n }\n });\n\n // Reload page to ensure clean state\n window.location.reload();\n};\n","import React from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { SearchModal } from '@semiont/react-ui';\nimport { useTranslation } from 'react-i18next';\n\ninterface GlobalSearchModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport function GlobalSearchModal({ isOpen, onClose }: GlobalSearchModalProps) {\n const router = useRouter();\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Search.${k}`, p as any) as string;\n\n const handleNavigate = (type: 'resource' | 'entity', id: string) => {\n if (type === 'resource') {\n router.push(`/know/resource/${encodeURIComponent(id)}`);\n } else {\n router.push(`/know/entity/${id}`);\n }\n };\n\n return (\n <SearchModal\n isOpen={isOpen}\n onClose={onClose}\n onNavigate={handleNavigate}\n translations={{\n placeholder: t('placeholder'),\n searching: t('searching'),\n noResults: t('noResults'),\n startTyping: t('startTyping'),\n navigate: t('navigate'),\n select: t('select'),\n close: t('close'),\n enter: t('enter'),\n esc: t('esc'),\n }}\n />\n );\n}","import React, { createContext, useContext, useState, useCallback } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useKeyboardShortcuts, useDoubleKeyPress, KeyboardShortcutsHelpModal } from '@semiont/react-ui';\nimport { GlobalSearchModal } from '../components/modals/GlobalSearchModal';\n\ninterface KeyboardShortcutsContextType {\n openGlobalSearch: () => void;\n openKeyboardHelp: () => void;\n closeAllOverlays: () => void;\n}\n\nexport const KeyboardShortcutsContext = createContext<KeyboardShortcutsContextType | null>(null);\n\nexport function useKeyboardShortcutsContext() {\n const context = useContext(KeyboardShortcutsContext);\n if (!context) {\n throw new Error('useKeyboardShortcutsContext must be used within KeyboardShortcutsProvider');\n }\n return context;\n}\n\ninterface KeyboardShortcutsProviderProps {\n children: React.ReactNode;\n}\n\nexport function KeyboardShortcutsProvider({ children }: KeyboardShortcutsProviderProps) {\n const router = useRouter();\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const [isHelpOpen, setIsHelpOpen] = useState(false);\n const [overlayCloseCallbacks, setOverlayCloseCallbacks] = useState<(() => void)[]>([]);\n\n // Open global search\n const openGlobalSearch = useCallback(() => {\n setIsSearchOpen(true);\n }, []);\n\n // Open keyboard help\n const openKeyboardHelp = useCallback(() => {\n setIsHelpOpen(true);\n }, []);\n\n // Close all overlays\n const closeAllOverlays = useCallback(() => {\n // Close all modals\n setIsSearchOpen(false);\n setIsHelpOpen(false);\n\n // Call all registered overlay close callbacks\n overlayCloseCallbacks.forEach(callback => callback());\n\n // Clear the callbacks\n setOverlayCloseCallbacks([]);\n }, [overlayCloseCallbacks]);\n\n // Register global keyboard shortcuts\n useKeyboardShortcuts([\n {\n key: 'k',\n ctrlOrCmd: true,\n handler: () => {\n openGlobalSearch();\n },\n description: 'Open global search'\n },\n {\n key: 'n',\n ctrlOrCmd: true,\n handler: () => {\n // Navigate to compose page to create new resource\n router.push('/know/compose');\n },\n description: 'Create new resource'\n },\n {\n key: '/',\n handler: () => {\n // Alternative search trigger (like GitHub)\n openGlobalSearch();\n },\n description: 'Open global search (alternative)'\n },\n {\n key: '?',\n shift: true,\n handler: () => {\n // Open keyboard shortcuts help\n openKeyboardHelp();\n },\n description: 'Show keyboard shortcuts help'\n }\n ]);\n\n // Double Escape to close all overlays\n useDoubleKeyPress('Escape', closeAllOverlays, 300);\n\n const contextValue: KeyboardShortcutsContextType = {\n openGlobalSearch,\n openKeyboardHelp,\n closeAllOverlays\n };\n\n return (\n <KeyboardShortcutsContext.Provider value={contextValue}>\n {children}\n {isSearchOpen && (\n <GlobalSearchModal\n isOpen={isSearchOpen}\n onClose={() => setIsSearchOpen(false)}\n />\n )}\n {isHelpOpen && (\n <KeyboardShortcutsHelpModal\n isOpen={isHelpOpen}\n onClose={() => setIsHelpOpen(false)}\n />\n )}\n </KeyboardShortcutsContext.Provider>\n );\n}"],"mappings":"4OAGA,IAAa,EAAsC,CACjD,CACE,GAAI,YACJ,KAAM,qBACN,YAAa,4JACb,SAAU,GACV,QAAS,CAAC,gBAAiB,sBAAsB,CAClD,CACD,CACE,GAAI,YACJ,KAAM,YACN,YAAa,+HACb,SAAU,GACV,QAAS,CAAC,MAAO,QAAS,OAAQ,OAAQ,eAAe,CAC1D,CACD,CACE,GAAI,YACJ,KAAM,YACN,YAAa,kIACb,SAAU,GACV,QAAS,CAAC,OAAQ,OAAQ,KAAM,QAAQ,CACzC,CACD,CACE,GAAI,cACJ,KAAM,cACN,YAAa,iGACb,SAAU,GACV,QAAS,CAAC,mBAAoB,sBAAuB,cAAc,CACpE,CACF,CAMY,EAAsB,yBAItB,EAAiC,CAC5C,UAAW,GACX,UAAW,GACX,UAAW,GACX,YAAa,GACb,UAAW,IAAI,MAAM,CAAC,aAAa,CACnC,QAAA,MACD,CC7CY,EAAkB,GAAiC,CAC1D,OAAO,OAAW,KAEtB,EAAkB,QAAQ,GAAY,CAChC,EAAS,UAEM,EAAQ,EAAS,KAGlC,EAAS,QAAQ,QAAQ,GAAc,CACrC,GAAI,EAAW,SAAS,IAAI,CAAE,CAE5B,IAAM,EAAS,EAAW,QAAQ,IAAK,GAAG,CAC1C,SAAS,OAAO,MAAM,IAAI,CAAC,QAAQ,GAAU,CAC3C,IAAM,EAAO,EAAO,MAAM,IAAI,CAAC,IAAI,MAAM,CACrC,GAAQ,EAAK,WAAW,EAAO,EACjC,EAAa,EAAK,EAEpB,MAEF,EAAa,EAAW,EAE1B,EAEJ,EAIS,EAAgB,GAAuB,CAElD,SAAS,OAAS,GAAG,EAAK,kDAE1B,SAAS,OAAS,GAAG,EAAK,2DAA2D,OAAO,SAAS,WAErG,IAAM,EAAa,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAC1E,SAAS,OAAS,GAAG,EAAK,4DAA4D,KCnC3E,MAA+C,CAC1D,GAAI,OAAO,OAAW,IAAa,OAAO,KAE1C,GAAI,CACF,IAAM,EAAU,aAAa,QAAQ,EAAoB,CACzD,GAAI,CAAC,EAAS,OAAO,KAErB,IAAM,EAAS,KAAK,MAAM,EAAQ,CAOlC,OAJI,EAAO,UAAA,MAIJ,EAHE,WAIF,EAAO,CAEd,OADA,QAAQ,KAAK,kCAAmC,EAAM,CAC/C,OAIE,EAAoB,GAA0C,CACzE,GAAI,OAAO,OAAW,IAAa,OAEnC,IAAM,EAA6B,CACjC,GAAG,EACH,GAAG,EACH,UAAW,GACX,UAAW,IAAI,MAAM,CAAC,aAAa,CACnC,QAAA,MACD,CAED,GAAI,CACF,aAAa,QAAQ,EAAqB,KAAK,UAAU,EAAY,CAAC,CAGtE,EAAe,EAAY,CAG3B,OAAO,cAAc,IAAI,YAAY,uBAAwB,CAC3D,OAAQ,EACT,CAAC,CAAC,OACI,EAAO,CACd,QAAQ,MAAM,iCAAkC,EAAM,GAI7C,MAAiC,CAC5C,IAAM,EAAU,GAAkB,CAClC,GAAI,CAAC,EAAS,MAAO,GAGrB,IAAM,EAAc,IAAI,KAAK,EAAQ,UAAU,CACzC,EAAoB,IAAI,KAG9B,OAFA,EAAkB,SAAS,EAAkB,UAAU,CAAG,GAAG,CAEtD,EAAc,GAGV,MACP,OAAO,OAAW,IAAoB,GACnC,CAAC,GAAiB,CC9Dd,EAAkB,SAAmD,CAChF,GAAI,CAGF,IAAM,EAAW,KAAK,gBAAgB,CAAC,iBAAiB,CAAC,SAMzD,OAJI,EAAS,SAAS,UAAU,CAAS,KACrC,EAAS,SAAS,sBAAsB,EAAI,EAAS,SAAS,oBAAoB,CAAS,KAC3F,EAAS,SAAS,WAAW,CAAS,KAEnC,aACD,CACN,MAAO,UAKE,EAAmB,SAEvB,MADgB,GAAiB,GACpB,KAIT,EAAmB,SAEvB,MADgB,GAAiB,GACpB,KAIT,MAA+C,CAC1D,GAAI,OAAO,OAAW,IAAa,MAAO,EAAE,CAE5C,IAAM,EAA+B,EAAE,CAGvC,SAAS,OAAO,MAAM,IAAI,CAAC,QAAQ,GAAU,CAC3C,GAAM,CAAC,EAAM,GAAS,EAAO,MAAM,CAAC,MAAM,IAAI,CAC1C,GAAQ,IACV,EAAK,UAAU,KAAU,mBAAmB,EAAM,GAEpD,CAGF,IAAK,IAAI,EAAI,EAAG,EAAI,aAAa,OAAQ,IAAK,CAC5C,IAAM,EAAM,aAAa,IAAI,EAAE,CAC3B,IACF,EAAK,gBAAgB,KAAS,aAAa,QAAQ,EAAI,EAAI,IAK/D,IAAK,IAAI,EAAI,EAAG,EAAI,eAAe,OAAQ,IAAK,CAC9C,IAAM,EAAM,eAAe,IAAI,EAAE,CAC7B,IACF,EAAK,kBAAkB,KAAS,eAAe,QAAQ,EAAI,EAAI,IAInE,OAAO,GAII,MAAgC,CACvC,OAAO,OAAW,MAGtB,aAAa,OAAO,CAGpB,eAAe,OAAO,CAGtB,SAAS,OAAO,MAAM,IAAI,CAAC,QAAQ,GAAU,CAC3C,IAAM,EAAO,EAAO,MAAM,IAAI,CAAC,IAAI,MAAM,CACrC,GACF,EAAa,EAAK,EAEpB,CAGF,OAAO,SAAS,QAAQ,kBCzE1B,SAAgB,EAAkB,CAAE,SAAQ,WAAmC,CAC7E,IAAM,EAAS,GAAW,CACpB,CAAE,EAAG,GAAO,GAAgB,CAC5B,GAAK,EAAW,IAAgC,EAAG,UAAU,IAAK,EAAS,CAUjF,OACE,EAAA,EAAA,KAAC,EAAD,CACU,SACC,UACT,YAZoB,EAA6B,IAAe,CAC9D,IAAS,WACX,EAAO,KAAK,kBAAkB,mBAAmB,EAAG,GAAG,CAEvD,EAAO,KAAK,gBAAgB,IAAK,EASjC,aAAc,CACZ,YAAa,EAAE,cAAc,CAC7B,UAAW,EAAE,YAAY,CACzB,UAAW,EAAE,YAAY,CACzB,YAAa,EAAE,cAAc,CAC7B,SAAU,EAAE,WAAW,CACvB,OAAQ,EAAE,SAAS,CACnB,MAAO,EAAE,QAAQ,CACjB,MAAO,EAAE,QAAQ,CACjB,IAAK,EAAE,MAAM,CACd,CACD,CAAA,CC5BN,IAAa,GAAA,EAAA,EAAA,eAA8E,KAAK,CAchG,SAAgB,EAA0B,CAAE,YAA4C,CACtF,IAAM,EAAS,GAAW,CACpB,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,GAAM,CACjD,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,GAAM,CAC7C,CAAC,EAAuB,IAAA,EAAA,EAAA,UAAqD,EAAE,CAAC,CAGhF,GAAA,EAAA,EAAA,iBAAqC,CACzC,EAAgB,GAAK,EACpB,EAAE,CAAC,CAGA,GAAA,EAAA,EAAA,iBAAqC,CACzC,EAAc,GAAK,EAClB,EAAE,CAAC,CAGA,GAAA,EAAA,EAAA,iBAAqC,CAEzC,EAAgB,GAAM,CACtB,EAAc,GAAM,CAGpB,EAAsB,QAAQ,GAAY,GAAU,CAAC,CAGrD,EAAyB,EAAE,CAAC,EAC3B,CAAC,EAAsB,CAAC,CAG3B,EAAqB,CACnB,CACE,IAAK,IACL,UAAW,GACX,YAAe,CACb,GAAkB,EAEpB,YAAa,qBACd,CACD,CACE,IAAK,IACL,UAAW,GACX,YAAe,CAEb,EAAO,KAAK,gBAAgB,EAE9B,YAAa,sBACd,CACD,CACE,IAAK,IACL,YAAe,CAEb,GAAkB,EAEpB,YAAa,mCACd,CACD,CACE,IAAK,IACL,MAAO,GACP,YAAe,CAEb,GAAkB,EAEpB,YAAa,+BACd,CACF,CAAC,CAGF,EAAkB,SAAU,EAAkB,IAAI,CAElD,IAAM,EAA6C,CACjD,mBACA,mBACA,mBACD,CAED,OACE,EAAA,EAAA,MAAC,EAAyB,SAA1B,CAAmC,MAAO,WAA1C,CACG,EACA,IACC,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,YAAe,EAAgB,GAAM,CACrC,CAAA,CAEH,IACC,EAAA,EAAA,KAAC,EAAD,CACE,OAAQ,EACR,YAAe,EAAc,GAAM,CACnC,CAAA,CAE8B"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t}from"./i18n-B53Yefbh.js";import{t as n}from"./vendor-0HjOURbh.js";import{kt as r,lt as i}from"./index-DjtRDlfn.js";var a=e(t(),1),o=n();function s(e,t,n,r,i=1){let a=Math.min(e.startX,e.endX),o=Math.min(e.startY,e.endY),s=Math.max(e.startX,e.endX),c=Math.max(e.startY,e.endY),l=a/i,u=(s-a)/i,d=r-c/i,f=(c-o)/i;return{page:t,x:Math.round(l),y:Math.round(d),width:Math.round(u),height:Math.round(f)}}function c(e,t,n=1){let r=e.x*n,i=e.width*n;return{x:r,y:(t-e.y-e.height)*n,width:i,height:e.height*n}}function l(e){return`page=${e.page}&viewrect=${e.x},${e.y},${e.width},${e.height}`}function u(e){try{let t=e.match(/page=(\d+)/);if(!t)return null;let n=parseInt(t[1],10),r=e.match(/viewrect=([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return r?{page:n,x:parseFloat(r[1]),y:parseFloat(r[2]),width:parseFloat(r[3]),height:parseFloat(r[4])}:null}catch{return null}}function d(e){let t=e.match(/page=(\d+)/);return t?parseInt(t[1],10):null}async function f(){return typeof window<`u`&&window.pdfjsLib?window.pdfjsLib:new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`/pdfjs/pdf.min.mjs`,n.type=`module`,n.onload=()=>{let n=window.pdfjsLib;if(!n){t(Error(`PDF.js loaded but pdfjsLib not available`));return}n.GlobalWorkerOptions.workerSrc=`/pdfjs/pdf.worker.min.mjs`,e(n)},n.onerror=()=>{t(Error(`Failed to load PDF.js from /pdfjs/pdf.min.mjs`))},document.head.appendChild(n)})}async function p(e){return(await f()).getDocument({url:e}).promise}async function m(e,t=1){let n=e.getViewport({scale:t}),r=document.createElement(`canvas`),i=r.getContext(`2d`);if(!i)throw Error(`Failed to get 2D context`);return r.width=n.width,r.height=n.height,await e.render({canvasContext:i,viewport:n}).promise,{dataUrl:r.toDataURL(`image/png`),width:n.width,height:n.height}}function h(e){if(!e)return{stroke:`rgb(156, 163, 175)`,fill:`rgba(156, 163, 175, 0.2)`};switch(e){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 g({pdfUrl:e,existingAnnotations:t=[],drawingMode:n,selectedMotivation:f,session:g,hoveredAnnotationId:_,selectedAnnotationId:v,hoverDelayMs:y=150}){let[b,x]=(0,a.useState)(null),[S,C]=(0,a.useState)(0),[w,T]=(0,a.useState)(1),[E,D]=(0,a.useState)(null),[O,k]=(0,a.useState)(!0),[A,j]=(0,a.useState)(null),[M,N]=(0,a.useState)(null),[P,F]=(0,a.useState)(null),[I]=(0,a.useState)(1.5),[L,R]=(0,a.useState)(!1),[z,B]=(0,a.useState)(null),V=(0,a.useRef)(null),H=(0,a.useRef)(null);(0,a.useEffect)(()=>{let t=!1;async function n(){try{k(!0),j(null);let n=await p(e);if(t)return;x(n),C(n.numPages),k(!1)}catch(e){if(t)return;console.error(`Error loading PDF:`,e),j(`Failed to load PDF`),k(!1)}}return n(),()=>{t=!0}},[e]),(0,a.useEffect)(()=>{if(!b)return;let e=!1,t=b;async function n(){try{let n=await t.getPage(w);if(e)return;let r=n.getViewport({scale:1});N({width:r.width,height:r.height});let{dataUrl:i}=await m(n,I);if(e)return;D(i)}catch(t){if(e)return;console.error(`Error loading page:`,t),j(`Failed to load page`)}}return n(),()=>{e=!0}},[b,w,I]),(0,a.useEffect)(()=>{let e=()=>{H.current&&F({width:H.current.clientWidth,height:H.current.clientHeight})};e();let t=null;try{t=new ResizeObserver(e),H.current&&t.observe(H.current)}catch{console.warn(`ResizeObserver not supported, falling back to window resize listener`),window.addEventListener(`resize`,e)}return()=>{t?t.disconnect():window.removeEventListener(`resize`,e)}},[E]);let U=(0,a.useCallback)(e=>{if(!n||!H.current)return;let t=H.current.getBoundingClientRect(),r=e.clientX-t.left,i=e.clientY-t.top;R(!0),B({startX:r,startY:i,endX:r,endY:i})},[n]),W=(0,a.useCallback)(e=>{if(!L||!z||!H.current)return;let t=H.current.getBoundingClientRect();B({...z,endX:e.clientX-t.left,endY:e.clientY-t.top})},[L,z]),G=(0,a.useCallback)(()=>{if(!L||!z||!M||!P||!g){R(!1),B(null);return}if(Math.sqrt((z.endX-z.startX)**2+(z.endY-z.startY)**2)<10){if(t.length>0){let e=q.find(e=>{let t=K(e.target);if(!t)return!1;let n=u(t.value);if(!n)return!1;let r=c(n,M.height,1),i=P.width/M.width,a=P.height/M.height,o=r.x*i,s=r.y*a,l=r.width*i,d=r.height*a;return z.endX>=o&&z.endX<=o+l&&z.endY>=s&&z.endY<=s+d});if(e){g?.client.browse.click(e.id,e.motivation),R(!1),B(null);return}}R(!1),B(null);return}let e=M.width/P.width,n=M.height/P.height,r=l(s({startX:z.startX*e,startY:z.startY*n,endX:z.endX*e,endY:z.endY*n},w,M.width,M.height,1));f&&g.client.mark.request({type:`FragmentSelector`,conformsTo:`http://tools.ietf.org/rfc/rfc3778`,value:r},f),R(!1)},[L,z,w,M,P,f,t]),K=e=>{let t=r(e);if(!t)return null;let n=(Array.isArray(t)?t:[t]).find(e=>e.type===`FragmentSelector`);return!n||n.type!==`FragmentSelector`?null:n},q=t.filter(e=>{let t=K(e.target);return t?d(t.value)===w:!1}),{handleMouseEnter:J,handleMouseLeave:Y}=(0,a.useMemo)(()=>i(e=>g?.client.beckon.hover(e),y),[g,y]),{stroke:X,fill:Z}=h(f??null);return A?(0,o.jsx)(`div`,{className:`semiont-pdf-annotation-canvas__error`,children:A}):(0,o.jsxs)(`div`,{className:`semiont-pdf-annotation-canvas`,children:[O&&(0,o.jsx)(`div`,{className:`semiont-pdf-annotation-canvas__loading`,children:`Loading PDF...`}),(0,o.jsxs)(`div`,{ref:V,className:`semiont-pdf-annotation-canvas__container`,style:{display:O?`none`:void 0},onMouseDown:U,onMouseMove:W,onMouseUp:G,onMouseLeave:()=>{L&&(R(!1),B(null))},"data-drawing-mode":n||`none`,children:[E&&(0,o.jsx)(`img`,{ref:H,src:E,alt:`PDF page ${w}`,className:`semiont-pdf-annotation-canvas__image`,draggable:!1,style:{pointerEvents:`none`},onLoad:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{H.current&&F({width:H.current.clientWidth,height:H.current.clientHeight})})})}}),P&&M&&(0,o.jsx)(`div`,{className:`semiont-pdf-annotation-canvas__overlay-container`,children:(0,o.jsx)(`div`,{className:`semiont-pdf-annotation-canvas__overlay`,children:(0,o.jsxs)(`svg`,{className:`semiont-pdf-annotation-canvas__svg`,width:P.width,height:P.height,children:[q.map(e=>{let t=K(e.target);if(!t)return null;let n=u(t.value);if(!n)return null;let r=c(n,M.height,1),i=P.width/M.width,a=P.height/M.height,s=e.id===_,l=e.id===v,d=e.motivation,{stroke:f,fill:p}=h(d);return(0,o.jsx)(`rect`,{x:r.x*i,y:r.y*a,width:r.width*i,height:r.height*a,stroke:f,strokeWidth:l?4:s?3:2,fill:p,style:{pointerEvents:`auto`,cursor:`pointer`,opacity:l?1:s?.9:.7},onClick:()=>g?.client.browse.click(e.id,e.motivation),onMouseEnter:()=>J(e.id),onMouseLeave:Y},e.id)}),z&&(0,o.jsx)(`rect`,{x:Math.min(z.startX,z.endX),y:Math.min(z.startY,z.endY),width:Math.abs(z.endX-z.startX),height:Math.abs(z.endY-z.startY),stroke:X,strokeWidth:2,strokeDasharray:`5,5`,fill:Z,pointerEvents:`none`})]})})})]}),S>0&&(0,o.jsxs)(`div`,{className:`semiont-pdf-annotation-canvas__controls`,children:[(0,o.jsx)(`button`,{disabled:w<=1,onClick:()=>T(w-1),className:`semiont-pdf-annotation-canvas__button`,children:`Previous`}),(0,o.jsxs)(`span`,{className:`semiont-pdf-annotation-canvas__page-info`,children:[`Page `,w,` of `,S]}),(0,o.jsx)(`button`,{disabled:w>=S,onClick:()=>T(w+1),className:`semiont-pdf-annotation-canvas__button`,children:`Next`})]})]})}export{g as PdfAnnotationCanvas};
2
+ //# sourceMappingURL=PdfAnnotationCanvas.client-CN3C3S55-DsCya3j0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PdfAnnotationCanvas.client-CN3C3S55-DsCya3j0.js","names":[],"sources":["../../../../packages/react-ui/dist/PdfAnnotationCanvas.client-CN3C3S55.js"],"sourcesContent":["'use client';\n\"use client\";\nimport \"./chunk-K6BJDL2I.js\";\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-CN3C3S55.js.map"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t,n}from"./i18n-B53Yefbh.js";import{t as r}from"./vendor-0HjOURbh.js";import{$ as i,G as a,H as o,J as s,Ot as c,Q as l,T as u,W as d,Z as f,_ as p,ct as m,dt as h,ft as g,o as _,ot as v,pt as y,q as b,tt as x,ut as S}from"./index-DjtRDlfn.js";import{n as C,t as w}from"./XMarkIcon-CddZGiiz.js";import{i as T,n as E,r as D}from"./routing-Bcj1FhkC.js";var O=e(t());function k({title:e,titleId:t,...n},r){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:r,"aria-labelledby":t},n),e?O.createElement(`title`,{id:t},e):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`}))}var A=O.forwardRef(k);function j({title:e,titleId:t,...n},r){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:r,"aria-labelledby":t},n),e?O.createElement(`title`,{id:t},e):null,O.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m4.5 12.75 6 6 9-13.5`}))}var M=O.forwardRef(j);function N({title:e,titleId:t,...n},r){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:r,"aria-labelledby":t},n),e?O.createElement(`title`,{id:t},e):null,O.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M12 4.5v15m7.5-7.5h-15`}))}var P=O.forwardRef(N),F=r(),I=`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiM2QjcyODAiLz4KPHBhdGggZD0iTTE2IDE2QzE4LjIwOTEgMTYgMjAgMTQuMjA5MSAyMCAxMkMyMCA5Ljc5MDg2IDE4LjIwOTEgOCAxNiA4QzEzLjc5MDkgOCAxMiA5Ljc5MDg2IDEyIDEyQzEyIDE0LjIwOTEgMTMuNzkwOSAxNiAxNiAxNloiIGZpbGw9IiNFNUU3RUIiLz4KPHBhdGggZD0iTTI0IDI1QzI0IDIxLjY4NjMgMjAuNDE4MyAxOSAxNiAxOUMxMS41ODE3IDE5IDggMjEuNjg2MyA4IDI1IiBzdHJva2U9IiNFNUU3RUIiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPg==`;function L(){let{t:e}=n(),t=(t,n)=>e(`UserPanel.${t}`,n),r=v(),s=f(r.activeSession$),c=f(s?.user$)??null,l=s?.kb??null,u=c?.name??c?.email?.split(`@`)[0]??`User`,p=c?.image??null,m=c?.domain||c?.email?.split(`@`)[1],h=c?.isAdmin??!1,g=c?.isModerator??!1,_=s?.client,y=x(()=>o(_)),b=T(),[S,C]=(0,O.useState)(!1),{timeRemaining:w}=i(),E=d(w)??`Unknown`,D=!p||S?I:a(p)||(console.warn(`Invalid profile image URL detected, using fallback`),I);return(0,F.jsxs)(`div`,{className:`semiont-user-panel`,children:[(0,F.jsx)(`h3`,{className:`semiont-user-panel__title`,children:t(`account`)}),l&&(0,F.jsx)(`div`,{style:{padding:`0 0.75rem 0.5rem`,fontSize:`0.8rem`,color:`var(--semiont-color-neutral-400)`},children:l.label}),(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsx)(`img`,{src:D,alt:t(`profileAlt`,{name:u||t(`user`)}),width:48,height:48,className:`w-12 h-12 rounded-full object-cover`,onError:()=>C(!0)}),(0,F.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,F.jsx)(`div`,{className:`semiont-panel-text`,children:u||t(`user`)}),m&&(0,F.jsxs)(`div`,{className:`semiont-panel-text-secondary`,children:[`@`,m]})]})]}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`semiont-panel-label`,children:t(`session`)}),(0,F.jsx)(`div`,{className:`semiont-session-box`,children:(0,F.jsx)(`div`,{className:`semiont-panel-hint`,children:t(`expiresIn`,{time:E})})})]}),(h||g)&&(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{className:`semiont-panel-label`,children:t(`privileges`)}),(0,F.jsxs)(`div`,{className:`space-y-1`,children:[h&&(0,F.jsx)(`div`,{className:`semiont-privilege-badge semiont-privilege-badge--admin`,children:(0,F.jsx)(`span`,{className:`semiont-privilege-text`,children:t(`administrator`)})}),g&&(0,F.jsx)(`div`,{className:`semiont-privilege-badge semiont-privilege-badge--moderator`,children:(0,F.jsx)(`span`,{className:`semiont-privilege-text`,children:t(`moderator`)})})]})]}),(0,F.jsx)(`div`,{className:`semiont-panel-divider`,children:(0,F.jsx)(`button`,{onClick:async()=>{await y.logout(),l&&await r.signOut(l.id),b.push(`/`)},className:`semiont-signout-button`,children:t(`signOut`)})})]})]})}var R={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)`},z={authenticated:`statusConnected`,expired:`statusExpired`,"signed-out":`statusSignedOut`,unreachable:`statusUnreachable`};function B({status:e,t}){return(0,F.jsx)(`span`,{title:t(z[e]),style:{width:`0.5rem`,height:`0.5rem`,borderRadius:`50%`,backgroundColor:R[e],flexShrink:0}})}function V({t:e,onSubmit:t,onCancel:n,error:r,isSubmitting:i,autoFocus:a,pulsing:o,initialHost:s=`localhost`,initialPort:c=4e3,initialEmail:l=`admin@example.com`}){let[u,d]=(0,O.useState)(s),[f,p]=(0,O.useState)(String(c)),[m,g]=(0,O.useState)(S(s)),[_,v]=(0,O.useState)(l),[y,b]=(0,O.useState)(``),x=e=>{d(e),g(S(e))};return(0,F.jsxs)(`div`,{className:o?`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:[(0,F.jsx)(`h3`,{style:{fontSize:`0.8rem`,fontWeight:600,marginBottom:`0.5rem`},children:e(`connectTitle`)}),(0,F.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),h(u)&&t(u,parseInt(f,10)||4e3,m,_,y)},style:{display:`flex`,flexDirection:`column`,gap:`0.5rem`},children:[(0,F.jsxs)(`select`,{value:m,onChange:e=>g(e.target.value),className:`semiont-input`,children:[(0,F.jsx)(`option`,{value:`http`,children:`HTTP`}),(0,F.jsx)(`option`,{value:`https`,children:`HTTPS`})]}),(0,F.jsx)(`input`,{type:`text`,value:u,onChange:e=>x(e.target.value),placeholder:`Host`,className:`semiont-input`,autoFocus:a}),(0,F.jsx)(`input`,{type:`number`,value:f,onChange:e=>p(e.target.value),placeholder:`Port`,className:`semiont-input`}),u&&!h(u)&&(0,F.jsx)(`div`,{style:{color:`var(--semiont-color-error-500, #ef4444)`,fontSize:`0.75rem`},children:e(`invalidHost`)}),(0,F.jsx)(`input`,{type:`email`,value:_,onChange:e=>v(e.target.value),placeholder:`Email`,className:`semiont-input`}),(0,F.jsx)(`input`,{type:`password`,value:y,onChange:e=>b(e.target.value),placeholder:`Password`,className:`semiont-input`}),r&&(0,F.jsx)(`div`,{style:{color:`var(--semiont-color-error-500, #ef4444)`,fontSize:`0.75rem`},children:r}),(0,F.jsxs)(`div`,{style:{display:`flex`,gap:`0.5rem`},children:[(0,F.jsx)(`button`,{type:`submit`,className:`semiont-button semiont-button--primary`,style:{flex:1},disabled:i||!h(u),children:e(i?`connecting`:`connect`)}),(0,F.jsx)(`button`,{type:`button`,className:`semiont-button`,onClick:n,children:(0,F.jsx)(w,{style:{width:`1rem`,height:`1rem`}})})]})]})]})}function H({t:e,kb:t,onSubmit:n,onCancel:r,error:i,isSubmitting:a}){let[o,s]=(0,O.useState)(``);return(0,F.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),n(o)},style:{padding:`0.5rem 0.75rem`,display:`flex`,flexDirection:`column`,gap:`0.375rem`},children:[(0,F.jsx)(`div`,{style:{fontSize:`0.75rem`,color:`var(--semiont-color-neutral-400)`},children:t.email}),(0,F.jsx)(`input`,{type:`password`,value:o,onChange:e=>s(e.target.value),placeholder:`Password`,className:`semiont-input`,style:{fontSize:`0.8rem`},autoFocus:!0}),i&&(0,F.jsx)(`div`,{style:{color:`var(--semiont-color-error-500, #ef4444)`,fontSize:`0.75rem`},children:i}),(0,F.jsxs)(`div`,{style:{display:`flex`,gap:`0.375rem`},children:[(0,F.jsx)(`button`,{type:`submit`,className:`semiont-button semiont-button--primary`,style:{flex:1,fontSize:`0.8rem`},disabled:a,children:e(a?`signingIn`:`signIn`)}),(0,F.jsx)(`button`,{type:`button`,className:`semiont-button`,onClick:r,style:{fontSize:`0.8rem`},children:e(`cancel`)})]})]})}async function U(e,t,n,r,i){let a=new y({baseUrl:c(`${n}://${e}:${t}`)}),o=new m(a,new g(a),a),s=await o.auth.password(r,i),l=s.token??s.accessToken,u=s.refreshToken;if(!l)throw Error(`No access token received`);if(!u)throw Error(`No refresh token received`);let d=`${e}:${t}`,f;try{let e=await o.admin.status();e.projectName&&(d=e.projectName),e.gitBranch&&(f=e.gitBranch)}catch{}return{token:l,refreshToken:u,label:d,...f?{gitBranch:f}:{}}}function W(){let{t:e}=n(),t=(t,n)=>e(`KnowledgeBasePanel.${t}`,n),r=v(),i=f(r.kbs$)??[],a=f(r.activeSession$)?.kb??null,o=e=>{r.setActiveKb(e)},s=r.addKb.bind(r),c=r.removeKb.bind(r),l=r.updateKb.bind(r),u=(e,t,n)=>{r.signIn(e,t,n)},d=e=>{r.signOut(e)},[p,m]=(0,O.useState)(!1),[h,g]=(0,O.useState)(null),[_,y]=(0,O.useState)(!1),[b,x]=(0,O.useState)(null),[S,w]=(0,O.useState)(null),[T,E]=(0,O.useState)(!1),[D,k]=(0,O.useState)(null),[,j]=(0,O.useState)(0);(0,O.useEffect)(()=>{i.length===0&&m(!0)},[i.length]),(0,O.useEffect)(()=>{let e=setInterval(()=>j(e=>e+1),3e4);return()=>clearInterval(e)},[]);let N=()=>{m(!0),x(null),g(null)},I=async(e,t,n,r,a)=>{g(null),y(!0);let o=i.find(n=>n.endpoint.kind===`http`&&n.endpoint.host===e&&n.endpoint.port===t);if(o){try{let{token:i,refreshToken:s,gitBranch:c}=await U(e,t,n,r,a);l(o.id,{...c?{gitBranch:c}:{}}),u(o.id,i,s),m(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{y(!1)}return}try{let{token:i,refreshToken:o,label:c,gitBranch:l}=await U(e,t,n,r,a);s({label:c,email:r,endpoint:{kind:`http`,host:e,port:t,protocol:n},...l?{gitBranch:l}:{}},i,o),m(!1)}catch(e){g(e instanceof Error?e.message:String(e))}finally{y(!1)}},L=async(e,t)=>{let n=i.find(t=>t.id===e);if(n){if(w(null),E(!0),n.endpoint.kind!==`http`){w(`Re-auth is HTTP-only; KB endpoint kind "${n.endpoint.kind}" is not supported here.`),E(!1);return}try{let{token:r,refreshToken:i,label:a,gitBranch:o}=await U(n.endpoint.host,n.endpoint.port,n.endpoint.protocol,n.email,t);l(e,{label:a,...o?{gitBranch:o}:{}}),u(e,r,i),x(null)}catch(e){w(e instanceof Error?e.message:String(e))}finally{E(!1)}}},R=e=>{r.getKbSessionStatus(e.id)===`authenticated`?o(e.id):(x(e.id),m(!1),w(null))};return(0,F.jsxs)(`div`,{className:`semiont-panel`,children:[(0,F.jsx)(`div`,{className:`semiont-panel-header`,children:(0,F.jsxs)(`h2`,{className:`semiont-panel-header__title`,children:[(0,F.jsx)(`span`,{className:`semiont-panel-header__text`,children:t(`title`)}),(0,F.jsxs)(`span`,{className:`semiont-panel-header__count`,children:[`(`,i.length,`)`]})]})}),(0,F.jsxs)(`div`,{className:`semiont-panel__content`,children:[(0,F.jsx)(`div`,{className:`semiont-panel__list`,children:i.map(e=>{let n=r.getKbSessionStatus(e.id),i=e.id===a?.id,o=b===e.id;return(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(`div`,{className:`semiont-panel-item semiont-panel-item--clickable${i?` semiont-panel-item--selected`:``}`,style:{display:`flex`,flexDirection:`column`,gap:`0.25rem`,cursor:`pointer`,padding:`0.5rem 0.75rem`},onClick:()=>R(e),children:[(0,F.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,F.jsx)(B,{status:n,t}),(0,F.jsx)(`span`,{className:`semiont-panel-text`,style:{flex:1,fontWeight:500},children:e.label}),i&&(0,F.jsx)(M,{style:{width:`1rem`,height:`1rem`,color:`var(--semiont-color-primary-500)`,flexShrink:0}}),n===`authenticated`&&(0,F.jsx)(`button`,{onClick:t=>{t.stopPropagation(),d(e.id)},title:t(`signOut`),style:{background:`none`,border:`none`,cursor:`pointer`,padding:`0.125rem`,color:`var(--semiont-color-neutral-400)`},children:(0,F.jsx)(A,{style:{width:`0.875rem`,height:`0.875rem`}})}),(0,F.jsx)(`button`,{onClick:t=>{t.stopPropagation(),k(e.id)},title:t(`remove`),style:{background:`none`,border:`none`,cursor:`pointer`,padding:`0.125rem`,color:`var(--semiont-color-neutral-400)`},children:(0,F.jsx)(C,{style:{width:`0.875rem`,height:`0.875rem`}})})]}),(0,F.jsxs)(`span`,{className:`semiont-panel-text-secondary`,style:{fontSize:`0.7rem`,paddingLeft:`1rem`},children:[e.endpoint.kind===`http`?`${e.endpoint.host}:${e.endpoint.port}`:`local:${e.endpoint.kbId}`,e.gitBranch?` · ${e.gitBranch}`:``]})]}),D===e.id&&(0,F.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:[(0,F.jsx)(`span`,{style:{flex:1,color:`var(--semiont-color-neutral-500)`},children:t(`removeConfirm`,{label:e.label})}),(0,F.jsx)(`button`,{onClick:()=>{c(e.id),k(null)},className:`semiont-button`,style:{fontSize:`0.75rem`,padding:`0.2rem 0.5rem`,color:`var(--semiont-color-error-500, #ef4444)`},children:t(`remove`)}),(0,F.jsx)(`button`,{onClick:()=>k(null),className:`semiont-button`,style:{fontSize:`0.75rem`,padding:`0.2rem 0.5rem`},children:t(`cancel`)})]}),o&&(0,F.jsx)(H,{t,kb:e,onSubmit:t=>L(e.id,t),onCancel:()=>x(null),error:S,isSubmitting:T})]},e.id)})}),p&&(0,F.jsx)(V,{t,onSubmit:I,onCancel:()=>m(!1),error:h,isSubmitting:_,autoFocus:i.length===0,pulsing:i.length===0})]}),!p&&(0,F.jsx)(`div`,{className:`semiont-panel-footer`,children:(0,F.jsxs)(`button`,{onClick:N,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:[(0,F.jsx)(P,{style:{width:`1rem`,height:`1rem`,flexShrink:0}}),(0,F.jsx)(`span`,{className:`semiont-panel-text`,style:{color:`inherit`},children:t(`addKnowledgeBase`)})]})})]})}function G({activePanel:e,theme:t,showLineNumbers:r,children:i}){let{hoverDelayMs:a}=s(),{t:o}=n(),c=!!f(f(v().activeSession$)?.user$),d=E(),m=T(),h=D(),[g,y]=(0,O.useTransition)(),{width:x,setWidth:S,minWidth:C,maxWidth:w}=l();return b({"settings:locale-changed":(0,O.useCallback)(({locale:e})=>{h&&y(()=>{m.replace(h,{locale:e})})},[h,m,y])}),!e||!i&&!_.includes(e)?null:(0,F.jsxs)(`div`,{className:`semiont-toolbar-panels`,style:{width:`${x}px`,position:`relative`},children:[(0,F.jsx)(p,{onResize:S,minWidth:C,maxWidth:w,position:`left`,ariaLabel:`Resize right panel`}),(0,F.jsxs)(`div`,{className:`semiont-toolbar-panels__content`,children:[i,e===`knowledge-base`&&(0,F.jsx)(W,{}),e===`user`&&(c?(0,F.jsx)(L,{}):(0,F.jsxs)(`div`,{className:`semiont-panel`,children:[(0,F.jsx)(`div`,{className:`semiont-panel-header`,children:(0,F.jsx)(`h2`,{className:`semiont-panel-header__title`,children:(0,F.jsx)(`span`,{className:`semiont-panel-header__text`,children:o(`UserPanel.account`)})})}),(0,F.jsx)(`div`,{className:`semiont-panel__content`,style:{padding:`1rem`,textAlign:`center`},children:(0,F.jsx)(`p`,{style:{color:`var(--semiont-color-neutral-400)`,fontSize:`0.85rem`,lineHeight:1.5},children:o(`AccountPanel.notAuthenticated`)})})]})),e===`settings`&&(0,F.jsx)(u,{showLineNumbers:r,theme:t,hoverDelayMs:a,locale:d,isPendingLocaleChange:g})]})]})}export{P as n,G as t};
2
+ //# sourceMappingURL=ToolbarPanels-CRGQDX-L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarPanels-CRGQDX-L.js","names":["ForwardRef","ForwardRef"],"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"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-jpDsebLB.js";import{i as t}from"./i18n-B53Yefbh.js";var n=e(t());function r({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.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`}))}var i=n.forwardRef(r);function a({title:e,titleId:t,...r},i){return n.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:i,"aria-labelledby":t},r),e?n.createElement(`title`,{id:t},e):null,n.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6 18 18 6M6 6l12 12`}))}var o=n.forwardRef(a);export{i as n,o as t};
2
+ //# sourceMappingURL=XMarkIcon-CddZGiiz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XMarkIcon-CddZGiiz.js","names":["ForwardRef"],"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;"],"x_google_ignoreList":[0,1],"mappings":"uGACA,SAAS,EAAU,CACjB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,gaACJ,CAAC,CAAC,CAEL,IAAMA,EAA2B,EAAM,WAAW,EAAU,CCvB5D,SAAS,EAAU,CACjB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,EACpB,CAAE,EAAM,CAAE,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,EACL,CAAE,EAAM,CAAG,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,uBACJ,CAAC,CAAC,CAEL,IAAM,EAA2B,EAAM,WAAW,EAAU"}
@@ -0,0 +1,2 @@
1
+ var e={annotations:`التعليقات التوضيحية`,history:`السجل`,resourceInfo:`معلومات المورد`,collaboration:`التعاون`,userAccount:`حساب المستخدم`,settings:`الإعدادات`,knowledgeBase:`قاعدة المعرفة`},t={title:`معلومات المورد`,locale:`اللغة المحلية`,notSpecified:`غير محدد`,entityTypeTags:`علامات نوع الكيان`,representation:`التمثيل`,mediaType:`نوع الوسائط`,byteSize:`الحجم`,clone:`استنساخ`,cloneDescription:`إنشاء رابط استنساخ قابل للمشاركة لهذا المورد`,archive:`أرشفة`,archiveDescription:`نقل هذا المورد إلى حالة الأرشيف`,unarchive:`إلغاء الأرشفة`,unarchiveDescription:`استعادة هذا المورد إلى الحالة النشطة`,provenance:`المصدر والسلسلة`,createdAt:`تاريخ الإنشاء`,modifiedAt:`تاريخ التعديل`,attributedTo:`منسوب إلى`,derivedFrom:`مشتق من`,storageUri:`التخزين`},n={title:`التعاون`,connectionStatus:`حالة الاتصال`,live:`مباشر`,disconnected:`غير متصل`,events:`{{count}} أحداث`,lastSync:`آخر مزامنة:`,noActivity:`لا يوجد نشاط بعد`,justNow:`الآن`,secondsAgo:`منذ {{count}} ثوانٍ`,minuteAgo:`منذ دقيقة واحدة`,minutesAgo:`منذ {{count}} دقائق`,hourAgo:`منذ ساعة واحدة`,hoursAgo:`منذ {{count}} ساعات`,realtimeActive:`التحديثات في الوقت الفعلي نشطة`,reconnecting:`جارٍ إعادة الاتصال بالخادم...`,sharing:`المشاركة`,collaborationComingSoon:`ميزات التعاون قادمة قريبًا`},r={history:`السجل`,loading:`جارٍ التحميل...`,user:`المستخدم`,viewOriginal:`عرض الأصل`,viewAnnotation:`عرض التعليق التوضيحي: {{content}}`,resourceCreated:`تم إنشاء المورد`,resourceCloned:`تم الاستنساخ`,resourceArchived:`تمت الأرشفة`,resourceUnarchived:`تم إلغاء الأرشفة`,highlightAdded:`تمت إضافة تمييز`,highlightRemoved:`تمت إزالة التمييز`,referenceCreated:`تم إنشاء مرجع`,referenceResolved:`تم حل المرجع`,referenceDeleted:`تم حذف المرجع`,entitytagAdded:`تمت إضافة علامة`,entitytagRemoved:`تمت إزالة العلامة`,assessmentAdded:`تمت إضافة تقييم`,assessmentRemoved:`تمت إزالة التقييم`,annotationAdded:`تمت إضافة تعليق توضيحي`,annotationRemoved:`تمت إزالة التعليق التوضيحي`,annotationBodyUpdated:`تم تحديث التعليق التوضيحي`,jobEvent:`حدث مهمة`,justNow:`الآن`,minutesAgo:`منذ {{count}}د`,hoursAgo:`منذ {{count}}س`,daysAgo:`منذ {{count}}ي`},i={title:`التعليقات`,noComments:`لا توجد تعليقات بعد. حدد نصًا وانقر على تعليق لإضافة واحد.`,commentPlaceholder:`اكتب تعليقك هنا...`,save:`حفظ`,cancel:`إلغاء`,edit:`تعديل`,annotateComments:`توضيح التعليقات`,instructions:`التعليمات`,optional:`(اختياري)`,instructionsPlaceholder:`مثال: التركيز على المصطلحات التقنية...`,annotate:`توضيح`,annotating:`جارٍ التوضيح...`,toneLabel:`النبرة`,toneOptional:`(اختياري)`,toneScholarly:`أكاديمي`,toneExplanatory:`توضيحي`,toneConversational:`حواري`,toneTechnical:`تقني`,densityLabel:`الكثافة`,densitySparse:`متفرق`,densityDense:`كثيف`,fragmentSelected:`تم تحديد جزء`,imageRegionSelected:`تم تحديد منطقة من الصورة`,closeProgress:`إغلاق`},a={title:`التمييزات`,noHighlights:`لا توجد تمييزات بعد. استخدم التوضيح بالذكاء الاصطناعي للعثور على الفقرات المهمة.`,annotateHighlights:`توضيح التمييزات`,instructions:`التعليمات`,optional:`(اختياري)`,instructionsPlaceholder:`مثال: التركيز على المفاهيم التقنية الرئيسية...`,annotate:`توضيح`,annotating:`جارٍ التوضيح...`,cancel:`إلغاء`,densityLabel:`الكثافة`,densitySparse:`متفرق`,densityDense:`كثيف`,closeProgress:`إغلاق`},o={title:`التقييمات`,noAssessments:`لا توجد تقييمات بعد. استخدم التوضيح بالذكاء الاصطناعي لتقييم الفقرات.`,assessmentPlaceholder:`اكتب تقييمك هنا...`,save:`حفظ`,cancel:`إلغاء`,annotateAssessments:`توضيح التقييمات`,instructions:`التعليمات`,optional:`(اختياري)`,instructionsPlaceholder:`مثال: تقييم الادعاءات من حيث الدقة والأدلة...`,annotate:`توضيح`,annotating:`جارٍ التوضيح...`,toneLabel:`النبرة`,toneOptional:`(اختياري)`,toneAnalytical:`تحليلي`,toneCritical:`نقدي`,toneBalanced:`متوازن`,toneConstructive:`بنّاء`,densityLabel:`الكثافة`,densitySparse:`متفرق`,densityDense:`كثيف`,fragmentSelected:`تم تحديد جزء`,imageRegionSelected:`تم تحديد منطقة من الصورة`,closeProgress:`إغلاق`},s={title:`العلامات`,noTags:`لا توجد علامات بعد. استخدم التوضيح بالذكاء الاصطناعي لتحديد الأدوار الهيكلية.`,noSchemas:"لا توجد مخططات وسوم مسجلة لقاعدة المعارف هذه. يجب على مسؤول قاعدة المعارف تسجيل مخطط تحليل هيكلي واحد على الأقل (مثلاً عبر مهارة `register-tag-schemas`) قبل استخدام الوسم.",annotateTags:`توضيح العلامات`,selectSchema:`اختيار الإطار`,selectCategories:`اختيار الفئات`,annotate:`توضيح`,annotating:`جارٍ التوضيح...`,cancel:`إلغاء`,selectAll:`تحديد الكل`,deselectAll:`إلغاء تحديد الكل`,categoriesSelected:`{count, plural, =0 {لم يتم تحديد فئات} =1 {فئة واحدة محددة} other {# فئات محددة}}`,createTagForSelection:`إنشاء علامة للتحديد`,selectCategory:`اختيار الفئة`,chooseCategory:`اختر فئة...`,fragmentSelected:`تم تحديد جزء`,imageRegionSelected:`تم تحديد منطقة من الصورة`},c={title:`التعليقات التوضيحية`,statistics:`الإحصائيات`,highlight:`التمييزات`,reference:`المراجع`,assessment:`التقييمات`,comment:`التعليقات`,tag:`العلامات`},l={title:`الإحصائيات`,highlights:`التمييزات`,comments:`التعليقات`,assessments:`التقييمات`,tags:`العلامات`,references:`المراجع`,stub:`مبدئي`,resolved:`محلول`,entityTypes:`أنواع الكيانات`},u={title:`المراجع`,noReferences:`لا توجد مراجع بعد. حدد نصًا لإنشاء مراجع لموارد أخرى.`,outgoingReferences:`المراجع الصادرة`,incomingReferences:`المراجع الواردة`,noIncomingReferences:`لا توجد مراجع واردة`,stub:`مرجع مبدئي (غير مربوط)`,resolved:`مرجع محلول (مربوط)`,open:`فتح`,unlink:`إلغاء الربط`,resolve:`حل المرجع`,cancel:`إلغاء`,createReference:`إنشاء مرجع`,entityTypesOptional:`أنواع الكيانات (اختياري)`,fragmentSelected:`تم تحديد جزء`,imageRegionSelected:`تم تحديد منطقة من الصورة`,annotateReferences:`توضيح المراجع`,selectEntityTypes:`أنواع الكيانات:`,select:`تحديد`,deselect:`إلغاء التحديد`,noEntityTypes:`لا توجد أنواع كيانات متاحة`,typesSelected:`{count, plural, =1 {نوع واحد محدد} other {# أنواع محددة}}`,annotate:`توضيح`,annotating:`جارٍ التوضيح...`,includeDescriptiveReferences:`تضمين المراجع الوصفية`,descriptiveReferencesTooltip:`البحث أيضًا عن عبارات مثل 'الرئيس التنفيذي'، 'عملاق التكنولوجيا'، 'الفيزيائي' (بالإضافة إلى الأسماء)`,annotationProgressTitle:`توضيح مراجع الكيانات`,cancelAnnotation:`إلغاء التوضيح`,found:`تم العثور على {{count}}`,complete:`اكتمل التوضيح!`,failed:`فشل التوضيح`,current:`الحالي: {{entityType}}`,closeProgress:`إغلاق`,loading:`جارٍ التحميل...`,loadingEllipsis:`جارٍ التحميل...`,untitledResource:`مورد بدون عنوان`,noText:`لا يوجد نص`},d={title:`اختصارات لوحة المفاتيح`,closeDialog:`إغلاق مربع الحوار`,or:`أو`,navigationTitle:`التنقل`,navOpenSearch:`فتح البحث الشامل`,navOpenSearchAlt:`فتح البحث الشامل (بديل)`,navCreateResource:`إنشاء مورد جديد`,navCloseOverlays:`إغلاق جميع الطبقات العلوية (ضغط مزدوج)`,navShowHelp:`عرض مساعدة اختصارات لوحة المفاتيح`,sidebarTitle:`الشريط الجانبي للمعرفة`,sidebarCollapse:`طي الشريط الجانبي`,sidebarExpand:`توسيع الشريط الجانبي`,sidebarPickup:`التقاط علامة تبويب المورد (عند التركيز)`,sidebarMove:`نقل علامة تبويب المورد (أثناء السحب)`,sidebarDrop:`إفلات علامة تبويب المورد (أثناء السحب)`,sidebarCancel:`إلغاء عملية السحب`,annotationsTitle:`تعليقات المورد التوضيحية`,annotHighlight:`إنشاء تمييز من التعليق التوضيحي (مباشر)`,annotReference:`فتح نافذة المرجع المنبثقة للتعليق التوضيحي`,annotDelete:`حذف التعليق التوضيحي المركّز عليه`,annotNavigate:`التنقل عبر التعليقات التوضيحية`,annotNavigateBack:`التنقل عبر التعليقات التوضيحية للخلف`,listsTitle:`القوائم والشبكات`,listsFilterNav:`التنقل بين مرشحات أنواع الكيانات`,listsGridNav:`التنقل في شبكة الموارد`,listsJumpFirst:`الانتقال إلى العنصر الأول`,listsJumpLast:`الانتقال إلى العنصر الأخير`,searchModalTitle:`في نافذة البحث`,searchNav:`التنقل في نتائج البحث`,searchSelect:`اختيار النتيجة`,searchClose:`إغلاق البحث`,modalTitle:`عناصر التحكم في النوافذ المنبثقة`,modalClose:`إغلاق النافذة المنبثقة النشطة`,modalNavForward:`التنقل للأمام عبر الأزرار`,modalNavBackward:`التنقل للخلف عبر الأزرار`,modalActivate:`تفعيل الزر المركّز عليه`,accessibilityTitle:`إمكانية الوصول`,a11ySkipLinks:`الانتقال إلى روابط التخطي (عند بداية الصفحة)`,a11yFollowLink:`اتباع رابط التخطي`,macNote:`استخدام اختصارات لوحة مفاتيح Mac. ⌘ هو مفتاح Command.`,windowsNote:`استخدام اختصارات لوحة مفاتيح Windows/Linux. Ctrl هو مفتاح التحكم.`,footerHint:`اضغط {{key}} في أي وقت لعرض هذه المساعدة`,close:`إغلاق`},f={modeGroup:`الوضع`,browse:`تصفح`,annotate:`توضيح`,selectionGroup:`الدافع`,clickGroup:`النقر`,shapeGroup:`الشكل`,none:`لا شيء`,linking:`مرجع`,highlighting:`تمييز`,assessing:`تقييم`,commenting:`تعليق`,tagging:`علامة`,detail:`تفصيل`,follow:`متابعة`,deleting:`حذف`,jsonld:`JSON-LD`,rectangle:`مستطيل`,circle:`دائرة`,polygon:`مضلع`},p={title:`التنقل`,collapseSidebar:`طي الشريط الجانبي`,expandSidebar:`توسيع الشريط الجانبي`,dragToReorder:`اسحب لإعادة الترتيب`,dragToReorderDoc:`اسحب لإعادة ترتيب {{name}}`,closeResource:`إغلاق المورد`,dragInstructions:`لإعادة ترتيب الموارد: استخدم Tab للانتقال إلى مورد. اضغط Alt+سهم لأعلى للتحريك لأعلى أو Alt+سهم لأسفل للتحريك لأسفل. للسحب والإفلات: اضغط على شريط المسافة لالتقاط العنصر. استخدم مفاتيح الأسهم لتحريكه. اضغط على شريط المسافة مرة أخرى للإفلات.`},m={deleteConfirmationTitle:`حذف التعليق التوضيحي`,deleteConfirmationMessage:`هل أنت متأكد أنك تريد حذف هذا التعليق التوضيحي؟ لا يمكن التراجع عن هذا الإجراء.`,deleteConfirmationCancel:`إلغاء`,deleteConfirmationDelete:`حذف`},h={title:`الإعدادات`,lineNumbers:`أرقام الأسطر`,lineNumbersVisible:`مرئية`,lineNumbersHidden:`مخفية`,theme:`السمة`,themeLight:`فاتح`,themeDark:`داكن`,themeSystem:`النظام`,themeSystemActive:`النظام ({{mode}})`,themeModeActive:`استخدام وضع {{mode}}`,language:`اللغة`,languageHint:`تغيير اللغة في شريط التنقل الرئيسي`,languageChanging:`جارٍ تغيير اللغة...`,hoverDelay:`تأخير التمرير`,hoverDelayFast:`سريع`,hoverDelaySlow:`بطيء`,hoverDelayDescription:`تأخير {{delay}} ميلي ثانية قبل ظهور تأثيرات التمرير`},g={},_={gatherTitle:`السياق المُجمَّع`,configureGenerationTitle:`تكوين التوليد`,configureSearchTitle:`إعدادات البحث`,searchResultsTitle:`نتائج البحث`,sourceContextLabel:`سياق التعليق التوضيحي في المورد`,connectionsLabel:`التعليقات التوضيحية للأقران`,citedByLabel:`المورد مُستشهد به من قِبل`,userHintLabel:`تلميح`,userHintPlaceholder:`صف ما يشير إليه هذا التعليق التوضيحي...`,loadingContext:`جارٍ جمع السياق...`,failedContext:`فشل في جمع السياق`,cancel:`إلغاء`,generate:`توليد`,compose:`تأليف`,resolutionStrategyLabel:`استراتيجية الحل`,back:`رجوع`,link:`رابط`,score:`درجة`,noResults:`لم يتم العثور على نتائج`,resourceTitle:`عنوان المورد`,resourceTitlePlaceholder:`أدخل عنوان المورد...`,additionalInstructions:`تعليمات إضافية`,additionalInstructionsPlaceholder:`أدخل تعليمات إضافية...`,language:`اللغة`,languageHelp:`لغة المحتوى المُولَّد`,creativity:`الإبداع`,creativityFocused:`مركّز`,creativityCreative:`إبداعي`,maxLength:`الحد الأقصى للطول`,maxLengthHelp:`العدد الأقصى من الرموز`,maxResults:`الحد الأقصى للنتائج`,semanticScoring:`التقييم الدلالي`,semanticScoringHelp:`استخدام الذكاء الاصطناعي لتقييم النتائج حسب الصلة الدلالية`,searching:`جاري البحث...`,search:`بحث`},v={embeddingComputed:`تم حساب التضمين`},y={Toolbar:e,ResourceInfoPanel:t,CollaborationPanel:n,AnnotationHistory:r,CommentsPanel:i,HighlightPanel:a,AssessmentPanel:o,TaggingPanel:s,UnifiedAnnotationsPanel:c,StatisticsPanel:l,ReferencesPanel:u,KeyboardShortcuts:d,AnnotateToolbar:f,CollapsibleResourceNavigation:p,ResourceViewer:m,Settings:h,AnnotateView:g,ReferenceWizard:_,History:v};export{f as AnnotateToolbar,g as AnnotateView,r as AnnotationHistory,o as AssessmentPanel,n as CollaborationPanel,p as CollapsibleResourceNavigation,i as CommentsPanel,a as HighlightPanel,v as History,d as KeyboardShortcuts,_ as ReferenceWizard,u as ReferencesPanel,t as ResourceInfoPanel,m as ResourceViewer,h as Settings,l as StatisticsPanel,s as TaggingPanel,e as Toolbar,c as UnifiedAnnotationsPanel,y as default};
2
+ //# sourceMappingURL=ar-U2EXWUMQ-Ds9Pt3_I.js.map