@semiont/cli 0.5.2 → 0.5.3

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 (218) hide show
  1. package/dist/cli.mjs +44 -10
  2. package/dist/frontend/dist/assets/{CookiePreferences-5feiOAX4.js → CookiePreferences-BizeRUGG.js} +2 -2
  3. package/dist/frontend/dist/assets/{CookiePreferences-5feiOAX4.js.map → CookiePreferences-BizeRUGG.js.map} +1 -1
  4. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-5QESNO5H-Cxm4Es_X.js → PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js} +2 -2
  5. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-5QESNO5H-Cxm4Es_X.js.map → PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js.map} +1 -1
  6. package/dist/frontend/dist/assets/{ToolbarPanels-D5L18Wxk.js → ToolbarPanels-Cz2uv68j.js} +2 -2
  7. package/dist/frontend/dist/assets/{ToolbarPanels-D5L18Wxk.js.map → ToolbarPanels-Cz2uv68j.js.map} +1 -1
  8. package/dist/frontend/dist/assets/ar-UUMMNQKF-xeh4Cwx2.js +2 -0
  9. package/dist/frontend/dist/assets/ar-UUMMNQKF-xeh4Cwx2.js.map +1 -0
  10. package/dist/frontend/dist/assets/bn-AL5BJSR3-Dz19S8vN.js +2 -0
  11. package/dist/frontend/dist/assets/bn-AL5BJSR3-Dz19S8vN.js.map +1 -0
  12. package/dist/frontend/dist/assets/{client-CTyYgbIC.js → client-BrB8xl9P.js} +2 -2
  13. package/dist/frontend/dist/assets/{client-CTyYgbIC.js.map → client-BrB8xl9P.js.map} +1 -1
  14. package/dist/frontend/dist/assets/{client-BmABw25x.js → client-C5p1ZZtM.js} +2 -2
  15. package/dist/frontend/dist/assets/{client-BmABw25x.js.map → client-C5p1ZZtM.js.map} +1 -1
  16. package/dist/frontend/dist/assets/{client-D7w_vlsg.js → client-D6q4B6bq.js} +2 -2
  17. package/dist/frontend/dist/assets/{client-D7w_vlsg.js.map → client-D6q4B6bq.js.map} +1 -1
  18. package/dist/frontend/dist/assets/{client-Cjf1Te8y.js → client-SkLMw-j7.js} +2 -2
  19. package/dist/frontend/dist/assets/{client-Cjf1Te8y.js.map → client-SkLMw-j7.js.map} +1 -1
  20. package/dist/frontend/dist/assets/cs-UMINALSU-HHT-dcWL.js +2 -0
  21. package/dist/frontend/dist/assets/cs-UMINALSU-HHT-dcWL.js.map +1 -0
  22. package/dist/frontend/dist/assets/da-FKUX6CDL-BpdJ67RW.js +2 -0
  23. package/dist/frontend/dist/assets/da-FKUX6CDL-BpdJ67RW.js.map +1 -0
  24. package/dist/frontend/dist/assets/de-XSJ3E25S-DJ6EvHYY.js +2 -0
  25. package/dist/frontend/dist/assets/de-XSJ3E25S-DJ6EvHYY.js.map +1 -0
  26. package/dist/frontend/dist/assets/el-UJXNRCBP-DhRdKHlx.js +2 -0
  27. package/dist/frontend/dist/assets/el-UJXNRCBP-DhRdKHlx.js.map +1 -0
  28. package/dist/frontend/dist/assets/es-VURP62BU-CgnB380t.js +2 -0
  29. package/dist/frontend/dist/assets/es-VURP62BU-CgnB380t.js.map +1 -0
  30. package/dist/frontend/dist/assets/{fa-V6JZJDYP-C8CwCeSd.js → fa-TIT5ZPZY-D28qBiUW.js} +2 -2
  31. package/dist/frontend/dist/assets/fa-TIT5ZPZY-D28qBiUW.js.map +1 -0
  32. package/dist/frontend/dist/assets/fi-F7VTGT4H-BeG0kw0Q.js +2 -0
  33. package/dist/frontend/dist/assets/fi-F7VTGT4H-BeG0kw0Q.js.map +1 -0
  34. package/dist/frontend/dist/assets/fr-2ZR26VF7-BwamaA96.js +2 -0
  35. package/dist/frontend/dist/assets/fr-2ZR26VF7-BwamaA96.js.map +1 -0
  36. package/dist/frontend/dist/assets/he-BXP2KYVZ-DuKmwNm_.js +2 -0
  37. package/dist/frontend/dist/assets/he-BXP2KYVZ-DuKmwNm_.js.map +1 -0
  38. package/dist/frontend/dist/assets/hi-PSWTP3NC-B7v6ttqy.js +2 -0
  39. package/dist/frontend/dist/assets/hi-PSWTP3NC-B7v6ttqy.js.map +1 -0
  40. package/dist/frontend/dist/assets/id-HO6TXGTO-Dj1JW3-q.js +2 -0
  41. package/dist/frontend/dist/assets/id-HO6TXGTO-Dj1JW3-q.js.map +1 -0
  42. package/dist/frontend/dist/assets/{index-BVOR3arc.js → index-QjYSiWWG.js} +53 -53
  43. package/dist/frontend/dist/assets/index-QjYSiWWG.js.map +1 -0
  44. package/dist/frontend/dist/assets/it-AGTDMBL3-Bq_I1CA1.js +2 -0
  45. package/dist/frontend/dist/assets/it-AGTDMBL3-Bq_I1CA1.js.map +1 -0
  46. package/dist/frontend/dist/assets/ja-TTGOVF5K-CkAQueln.js +2 -0
  47. package/dist/frontend/dist/assets/ja-TTGOVF5K-CkAQueln.js.map +1 -0
  48. package/dist/frontend/dist/assets/ko-FF77IQ7N-fJgs5Roz.js +2 -0
  49. package/dist/frontend/dist/assets/ko-FF77IQ7N-fJgs5Roz.js.map +1 -0
  50. package/dist/frontend/dist/assets/{layout-B1HJjFMW.js → layout-BO_gP65g.js} +2 -2
  51. package/dist/frontend/dist/assets/{layout-B1HJjFMW.js.map → layout-BO_gP65g.js.map} +1 -1
  52. package/dist/frontend/dist/assets/{layout-B7mIcfJU.js → layout-C-P8uUyx.js} +2 -2
  53. package/dist/frontend/dist/assets/{layout-B7mIcfJU.js.map → layout-C-P8uUyx.js.map} +1 -1
  54. package/dist/frontend/dist/assets/{layout-Cw-T4GPy.js → layout-C7qxASOF.js} +2 -2
  55. package/dist/frontend/dist/assets/{layout-Cw-T4GPy.js.map → layout-C7qxASOF.js.map} +1 -1
  56. package/dist/frontend/dist/assets/{layout-BK6OF3Hx.js → layout-DVrTweI_.js} +2 -2
  57. package/dist/frontend/dist/assets/{layout-BK6OF3Hx.js.map → layout-DVrTweI_.js.map} +1 -1
  58. package/dist/frontend/dist/assets/ms-UPQWWIL4-DEDFniGv.js +2 -0
  59. package/dist/frontend/dist/assets/ms-UPQWWIL4-DEDFniGv.js.map +1 -0
  60. package/dist/frontend/dist/assets/nl-W75HEPFL-D2_VQYac.js +2 -0
  61. package/dist/frontend/dist/assets/nl-W75HEPFL-D2_VQYac.js.map +1 -0
  62. package/dist/frontend/dist/assets/no-R4W7W7ZU-Duk86nrT.js +2 -0
  63. package/dist/frontend/dist/assets/no-R4W7W7ZU-Duk86nrT.js.map +1 -0
  64. package/dist/frontend/dist/assets/{not-found-uRBdv-bF.js → not-found-CVsHHn2n.js} +2 -2
  65. package/dist/frontend/dist/assets/{not-found-uRBdv-bF.js.map → not-found-CVsHHn2n.js.map} +1 -1
  66. package/dist/frontend/dist/assets/{page-CBL0MuAo.js → page-3CgxsYbh.js} +2 -2
  67. package/dist/frontend/dist/assets/{page-CBL0MuAo.js.map → page-3CgxsYbh.js.map} +1 -1
  68. package/dist/frontend/dist/assets/{page-BLt9SJto.js → page-8S-MQzsq.js} +2 -2
  69. package/dist/frontend/dist/assets/{page-BLt9SJto.js.map → page-8S-MQzsq.js.map} +1 -1
  70. package/dist/frontend/dist/assets/{page-Bnawjb1Y.js → page-B-leMN2k.js} +2 -2
  71. package/dist/frontend/dist/assets/{page-Bnawjb1Y.js.map → page-B-leMN2k.js.map} +1 -1
  72. package/dist/frontend/dist/assets/{page-CKCKmPQO.js → page-B5Dz_Nh-.js} +2 -2
  73. package/dist/frontend/dist/assets/{page-CKCKmPQO.js.map → page-B5Dz_Nh-.js.map} +1 -1
  74. package/dist/frontend/dist/assets/{page-5wC1as95.js → page-BfKm2iQ2.js} +2 -2
  75. package/dist/frontend/dist/assets/{page-5wC1as95.js.map → page-BfKm2iQ2.js.map} +1 -1
  76. package/dist/frontend/dist/assets/{page-wxqWVnqc.js → page-Br5SeiDL.js} +2 -2
  77. package/dist/frontend/dist/assets/{page-wxqWVnqc.js.map → page-Br5SeiDL.js.map} +1 -1
  78. package/dist/frontend/dist/assets/page-C6_MlYjr.js +2 -0
  79. package/dist/frontend/dist/assets/{page-C7vfVcap.js.map → page-C6_MlYjr.js.map} +1 -1
  80. package/dist/frontend/dist/assets/page-CXE3Zhkq.js +2 -0
  81. package/dist/frontend/dist/assets/page-CXE3Zhkq.js.map +1 -0
  82. package/dist/frontend/dist/assets/{page-CdqGKYBH.js → page-Cg1IhnH2.js} +2 -2
  83. package/dist/frontend/dist/assets/{page-CdqGKYBH.js.map → page-Cg1IhnH2.js.map} +1 -1
  84. package/dist/frontend/dist/assets/{page-BlU7QK_-.js → page-CqV1yD4w.js} +2 -2
  85. package/dist/frontend/dist/assets/{page-BlU7QK_-.js.map → page-CqV1yD4w.js.map} +1 -1
  86. package/dist/frontend/dist/assets/{page-Bcljtfsa.js → page-D6saO7D3.js} +2 -2
  87. package/dist/frontend/dist/assets/{page-Bcljtfsa.js.map → page-D6saO7D3.js.map} +1 -1
  88. package/dist/frontend/dist/assets/{page-Dgqi9Orl.js → page-D7ZN9Yo5.js} +2 -2
  89. package/dist/frontend/dist/assets/{page-Dgqi9Orl.js.map → page-D7ZN9Yo5.js.map} +1 -1
  90. package/dist/frontend/dist/assets/{page-CfMLSllg.js → page-DaL8x94G.js} +2 -2
  91. package/dist/frontend/dist/assets/{page-CfMLSllg.js.map → page-DaL8x94G.js.map} +1 -1
  92. package/dist/frontend/dist/assets/{page-BNaAGnc3.js → page-Dj5UZ_d6.js} +2 -2
  93. package/dist/frontend/dist/assets/{page-BNaAGnc3.js.map → page-Dj5UZ_d6.js.map} +1 -1
  94. package/dist/frontend/dist/assets/{page-SrDV7XYv.js → page-DyGU2n2w.js} +2 -2
  95. package/dist/frontend/dist/assets/{page-SrDV7XYv.js.map → page-DyGU2n2w.js.map} +1 -1
  96. package/dist/frontend/dist/assets/{page-D7w7NNd7.js → page-E4A7Vkwl.js} +2 -2
  97. package/dist/frontend/dist/assets/{page-D7w7NNd7.js.map → page-E4A7Vkwl.js.map} +1 -1
  98. package/dist/frontend/dist/assets/{page-Bf4MMijQ.js → page-OFxNMOoF.js} +2 -2
  99. package/dist/frontend/dist/assets/{page-Bf4MMijQ.js.map → page-OFxNMOoF.js.map} +1 -1
  100. package/dist/frontend/dist/assets/{page-DAH06BM4.js → page-RRMlL_4-.js} +2 -2
  101. package/dist/frontend/dist/assets/{page-DAH06BM4.js.map → page-RRMlL_4-.js.map} +1 -1
  102. package/dist/frontend/dist/assets/pl-GQC2ELWO-CYs9xZGI.js +2 -0
  103. package/dist/frontend/dist/assets/pl-GQC2ELWO-CYs9xZGI.js.map +1 -0
  104. package/dist/frontend/dist/assets/{privacy-Kk_oWnpO.js → privacy-Rbj4Ycw9.js} +2 -2
  105. package/dist/frontend/dist/assets/{privacy-Kk_oWnpO.js.map → privacy-Rbj4Ycw9.js.map} +1 -1
  106. package/dist/frontend/dist/assets/pt-YGVT62RU-pnVyr-_6.js +2 -0
  107. package/dist/frontend/dist/assets/pt-YGVT62RU-pnVyr-_6.js.map +1 -0
  108. package/dist/frontend/dist/assets/ro-TST6XS6X-CRozzX2s.js +2 -0
  109. package/dist/frontend/dist/assets/ro-TST6XS6X-CRozzX2s.js.map +1 -0
  110. package/dist/frontend/dist/assets/{routing-CKNCPdYO.js → routing-CUnWbO2L.js} +2 -2
  111. package/dist/frontend/dist/assets/{routing-CKNCPdYO.js.map → routing-CUnWbO2L.js.map} +1 -1
  112. package/dist/frontend/dist/assets/{routing-CGghUc0N.js → routing-CxPkffyg.js} +2 -2
  113. package/dist/frontend/dist/assets/{routing-CGghUc0N.js.map → routing-CxPkffyg.js.map} +1 -1
  114. package/dist/frontend/dist/assets/sv-TQLF6HV7-DNDzEE6l.js +2 -0
  115. package/dist/frontend/dist/assets/sv-TQLF6HV7-DNDzEE6l.js.map +1 -0
  116. package/dist/frontend/dist/assets/th-HJUIETVR-C8TRIJwR.js +2 -0
  117. package/dist/frontend/dist/assets/th-HJUIETVR-C8TRIJwR.js.map +1 -0
  118. package/dist/frontend/dist/assets/tr-CW3C46TW-wpHSGdDw.js +2 -0
  119. package/dist/frontend/dist/assets/tr-CW3C46TW-wpHSGdDw.js.map +1 -0
  120. package/dist/frontend/dist/assets/uk-WTHZQB2U-3kAkt5-3.js +2 -0
  121. package/dist/frontend/dist/assets/uk-WTHZQB2U-3kAkt5-3.js.map +1 -0
  122. package/dist/frontend/dist/assets/vi-PHWHJLKP-DYHi4xUC.js +2 -0
  123. package/dist/frontend/dist/assets/vi-PHWHJLKP-DYHi4xUC.js.map +1 -0
  124. package/dist/frontend/dist/assets/{web-DdXPBk3h.js → web-C8yeWrxL.js} +2 -2
  125. package/dist/frontend/dist/assets/{web-DdXPBk3h.js.map → web-C8yeWrxL.js.map} +1 -1
  126. package/dist/frontend/dist/assets/zh-MO3FCUD6-CLkb7wBO.js +2 -0
  127. package/dist/frontend/dist/assets/zh-MO3FCUD6-CLkb7wBO.js.map +1 -0
  128. package/dist/frontend/dist/index.html +1 -1
  129. package/dist/frontend/dist/messages/ar.json +1 -16
  130. package/dist/frontend/dist/messages/bn.json +1 -16
  131. package/dist/frontend/dist/messages/cs.json +1 -16
  132. package/dist/frontend/dist/messages/da.json +1 -16
  133. package/dist/frontend/dist/messages/de.json +1 -16
  134. package/dist/frontend/dist/messages/el.json +1 -16
  135. package/dist/frontend/dist/messages/en.json +1 -16
  136. package/dist/frontend/dist/messages/es.json +1 -16
  137. package/dist/frontend/dist/messages/fa.json +1 -16
  138. package/dist/frontend/dist/messages/fi.json +1 -16
  139. package/dist/frontend/dist/messages/fr.json +1 -16
  140. package/dist/frontend/dist/messages/he.json +1 -16
  141. package/dist/frontend/dist/messages/hi.json +1 -16
  142. package/dist/frontend/dist/messages/id.json +1 -16
  143. package/dist/frontend/dist/messages/it.json +1 -16
  144. package/dist/frontend/dist/messages/ja.json +1 -16
  145. package/dist/frontend/dist/messages/ko.json +1 -16
  146. package/dist/frontend/dist/messages/ms.json +1 -16
  147. package/dist/frontend/dist/messages/nl.json +1 -16
  148. package/dist/frontend/dist/messages/no.json +1 -16
  149. package/dist/frontend/dist/messages/pl.json +1 -16
  150. package/dist/frontend/dist/messages/pt.json +1 -16
  151. package/dist/frontend/dist/messages/ro.json +1 -16
  152. package/dist/frontend/dist/messages/sv.json +1 -16
  153. package/dist/frontend/dist/messages/th.json +1 -16
  154. package/dist/frontend/dist/messages/tr.json +1 -16
  155. package/dist/frontend/dist/messages/uk.json +1 -16
  156. package/dist/frontend/dist/messages/vi.json +1 -16
  157. package/dist/frontend/dist/messages/zh.json +1 -16
  158. package/dist/frontend/package.json +1 -1
  159. package/package.json +8 -8
  160. package/dist/frontend/dist/assets/ar-3W37O3R3-BJ1fDUvB.js +0 -2
  161. package/dist/frontend/dist/assets/ar-3W37O3R3-BJ1fDUvB.js.map +0 -1
  162. package/dist/frontend/dist/assets/bn-JZTJLMVE-k1gI6ffq.js +0 -2
  163. package/dist/frontend/dist/assets/bn-JZTJLMVE-k1gI6ffq.js.map +0 -1
  164. package/dist/frontend/dist/assets/cs-XYHH7HNE-BqQWIWM9.js +0 -2
  165. package/dist/frontend/dist/assets/cs-XYHH7HNE-BqQWIWM9.js.map +0 -1
  166. package/dist/frontend/dist/assets/da-MZKIECVT-pufSb0d_.js +0 -2
  167. package/dist/frontend/dist/assets/da-MZKIECVT-pufSb0d_.js.map +0 -1
  168. package/dist/frontend/dist/assets/de-AYXTMRQW-BRMduIa0.js +0 -2
  169. package/dist/frontend/dist/assets/de-AYXTMRQW-BRMduIa0.js.map +0 -1
  170. package/dist/frontend/dist/assets/el-A6CVQWAW-DycBhXUi.js +0 -2
  171. package/dist/frontend/dist/assets/el-A6CVQWAW-DycBhXUi.js.map +0 -1
  172. package/dist/frontend/dist/assets/es-M2HXLJGT-BFQ6WIpw.js +0 -2
  173. package/dist/frontend/dist/assets/es-M2HXLJGT-BFQ6WIpw.js.map +0 -1
  174. package/dist/frontend/dist/assets/fa-V6JZJDYP-C8CwCeSd.js.map +0 -1
  175. package/dist/frontend/dist/assets/fi-ONDTZ5H7-aby5--Ip.js +0 -2
  176. package/dist/frontend/dist/assets/fi-ONDTZ5H7-aby5--Ip.js.map +0 -1
  177. package/dist/frontend/dist/assets/fr-PAPV4H4G-D9SFT8MA.js +0 -2
  178. package/dist/frontend/dist/assets/fr-PAPV4H4G-D9SFT8MA.js.map +0 -1
  179. package/dist/frontend/dist/assets/he-F6VTLJLW-B8Rc1C-m.js +0 -2
  180. package/dist/frontend/dist/assets/he-F6VTLJLW-B8Rc1C-m.js.map +0 -1
  181. package/dist/frontend/dist/assets/hi-CFUAV4BF-CuWy2y7I.js +0 -2
  182. package/dist/frontend/dist/assets/hi-CFUAV4BF-CuWy2y7I.js.map +0 -1
  183. package/dist/frontend/dist/assets/id-NBKLCCI7-DnMwKKq7.js +0 -2
  184. package/dist/frontend/dist/assets/id-NBKLCCI7-DnMwKKq7.js.map +0 -1
  185. package/dist/frontend/dist/assets/index-BVOR3arc.js.map +0 -1
  186. package/dist/frontend/dist/assets/it-SLSOWVVU-hrlm8f9F.js +0 -2
  187. package/dist/frontend/dist/assets/it-SLSOWVVU-hrlm8f9F.js.map +0 -1
  188. package/dist/frontend/dist/assets/ja-L5IG4ECE-BvMVB5sy.js +0 -2
  189. package/dist/frontend/dist/assets/ja-L5IG4ECE-BvMVB5sy.js.map +0 -1
  190. package/dist/frontend/dist/assets/ko-QYMTULKK-CNEZe0oy.js +0 -2
  191. package/dist/frontend/dist/assets/ko-QYMTULKK-CNEZe0oy.js.map +0 -1
  192. package/dist/frontend/dist/assets/ms-5DGSFKM2-BlyezW6W.js +0 -2
  193. package/dist/frontend/dist/assets/ms-5DGSFKM2-BlyezW6W.js.map +0 -1
  194. package/dist/frontend/dist/assets/nl-VZPCGONO-BJ0llUPS.js +0 -2
  195. package/dist/frontend/dist/assets/nl-VZPCGONO-BJ0llUPS.js.map +0 -1
  196. package/dist/frontend/dist/assets/no-MF6F352I-Wf2ZNjHx.js +0 -2
  197. package/dist/frontend/dist/assets/no-MF6F352I-Wf2ZNjHx.js.map +0 -1
  198. package/dist/frontend/dist/assets/page-B6XEk2Ue.js +0 -2
  199. package/dist/frontend/dist/assets/page-B6XEk2Ue.js.map +0 -1
  200. package/dist/frontend/dist/assets/page-C7vfVcap.js +0 -2
  201. package/dist/frontend/dist/assets/pl-WIK72JUO-wOGg7Me5.js +0 -2
  202. package/dist/frontend/dist/assets/pl-WIK72JUO-wOGg7Me5.js.map +0 -1
  203. package/dist/frontend/dist/assets/pt-RRP5ZF6A-C32Vedhv.js +0 -2
  204. package/dist/frontend/dist/assets/pt-RRP5ZF6A-C32Vedhv.js.map +0 -1
  205. package/dist/frontend/dist/assets/ro-XHQLC3T7-uGs3uHRp.js +0 -2
  206. package/dist/frontend/dist/assets/ro-XHQLC3T7-uGs3uHRp.js.map +0 -1
  207. package/dist/frontend/dist/assets/sv-EWULDN6E-CkRBfwt9.js +0 -2
  208. package/dist/frontend/dist/assets/sv-EWULDN6E-CkRBfwt9.js.map +0 -1
  209. package/dist/frontend/dist/assets/th-TGOBHFG4-BGt_aO5K.js +0 -2
  210. package/dist/frontend/dist/assets/th-TGOBHFG4-BGt_aO5K.js.map +0 -1
  211. package/dist/frontend/dist/assets/tr-LMMPBMV7-CrGE1PKA.js +0 -2
  212. package/dist/frontend/dist/assets/tr-LMMPBMV7-CrGE1PKA.js.map +0 -1
  213. package/dist/frontend/dist/assets/uk-IPGRRJY6-CPaxgpd8.js +0 -2
  214. package/dist/frontend/dist/assets/uk-IPGRRJY6-CPaxgpd8.js.map +0 -1
  215. package/dist/frontend/dist/assets/vi-Q676OJQS-DpyIm6R1.js +0 -2
  216. package/dist/frontend/dist/assets/vi-Q676OJQS-DpyIm6R1.js.map +0 -1
  217. package/dist/frontend/dist/assets/zh-F3MTWQDX-C09t_PFf.js +0 -2
  218. package/dist/frontend/dist/assets/zh-F3MTWQDX-C09t_PFf.js.map +0 -1
package/dist/cli.mjs CHANGED
@@ -17045,7 +17045,7 @@ function wrapAsStream(source) {
17045
17045
  return () => sub.unsubscribe();
17046
17046
  });
17047
17047
  }
17048
- var import_rxjs, import_operators, StreamObservable, CacheObservable, wrapperCache, UploadObservable, BusRequestError, ENTITY_TYPES_KEY, BrowseNamespace, MarkNamespace, BindNamespace, GatherNamespace, MatchNamespace, YieldNamespace, BeckonNamespace, FrameNamespace, JobNamespace, AuthNamespace, AdminNamespace, SemiontClient, REFRESH_BEFORE_EXP_MS;
17048
+ var import_rxjs, import_operators, StreamObservable, CacheObservable, wrapperCache, UploadObservable, BusRequestError, ENTITY_TYPES_KEY, TAG_SCHEMAS_KEY, BrowseNamespace, MarkNamespace, BindNamespace, GatherNamespace, MatchNamespace, YieldNamespace, BeckonNamespace, FrameNamespace, JobNamespace, AuthNamespace, AdminNamespace, SemiontClient, REFRESH_BEFORE_EXP_MS;
17049
17049
  var init_dist = __esm({
17050
17050
  "../../packages/sdk/dist/index.js"() {
17051
17051
  "use strict";
@@ -17104,6 +17104,7 @@ var init_dist = __esm({
17104
17104
  }
17105
17105
  };
17106
17106
  ENTITY_TYPES_KEY = "_";
17107
+ TAG_SCHEMAS_KEY = "_";
17107
17108
  BrowseNamespace = class {
17108
17109
  constructor(transport, bus, content) {
17109
17110
  this.transport = transport;
@@ -17164,6 +17165,16 @@ var init_dist = __esm({
17164
17165
  );
17165
17166
  return result.entityTypes;
17166
17167
  });
17168
+ this.tagSchemasCache = createCache(async () => {
17169
+ const result = await busRequest(
17170
+ this.transport,
17171
+ "browse:tag-schemas-requested",
17172
+ {},
17173
+ "browse:tag-schemas-result",
17174
+ "browse:tag-schemas-failed"
17175
+ );
17176
+ return result.tagSchemas;
17177
+ });
17167
17178
  this.referencedByCache = createCache(async (resourceId22) => {
17168
17179
  const result = await busRequest(
17169
17180
  this.transport,
@@ -17207,6 +17218,7 @@ var init_dist = __esm({
17207
17218
  annotationDetailCache;
17208
17219
  annotationResources = /* @__PURE__ */ new Map();
17209
17220
  entityTypesCache;
17221
+ tagSchemasCache;
17210
17222
  referencedByCache;
17211
17223
  resourceEventsCache;
17212
17224
  /** Filter-blob memory so `invalidateResourceLists` can replay per-key. */
@@ -17249,6 +17261,9 @@ var init_dist = __esm({
17249
17261
  entityTypes() {
17250
17262
  return CacheObservable.from(this.entityTypesCache.observe(ENTITY_TYPES_KEY));
17251
17263
  }
17264
+ tagSchemas() {
17265
+ return CacheObservable.from(this.tagSchemasCache.observe(TAG_SCHEMAS_KEY));
17266
+ }
17252
17267
  referencedBy(resourceId22) {
17253
17268
  return CacheObservable.from(this.referencedByCache.observe(resourceId22));
17254
17269
  }
@@ -17333,6 +17348,9 @@ var init_dist = __esm({
17333
17348
  invalidateEntityTypes() {
17334
17349
  this.entityTypesCache.invalidate(ENTITY_TYPES_KEY);
17335
17350
  }
17351
+ invalidateTagSchemas() {
17352
+ this.tagSchemasCache.invalidate(TAG_SCHEMAS_KEY);
17353
+ }
17336
17354
  invalidateReferencedBy(resourceId22) {
17337
17355
  this.referencedByCache.invalidate(resourceId22);
17338
17356
  }
@@ -17409,6 +17427,7 @@ var init_dist = __esm({
17409
17427
  for (const rId of this.referencedByCache.keys()) this.invalidateReferencedBy(rId);
17410
17428
  }
17411
17429
  this.invalidateEntityTypes();
17430
+ this.invalidateTagSchemas();
17412
17431
  });
17413
17432
  this.on("mark:delete-ok", (event) => {
17414
17433
  this.removeAnnotationDetail(annotationId(event.annotationId));
@@ -17444,6 +17463,7 @@ var init_dist = __esm({
17444
17463
  this.on("mark:archived", this.onArchiveToggled);
17445
17464
  this.on("mark:unarchived", this.onArchiveToggled);
17446
17465
  this.on("frame:entity-type-added", () => this.invalidateEntityTypes());
17466
+ this.on("frame:tag-schema-added", () => this.invalidateTagSchemas());
17447
17467
  }
17448
17468
  };
17449
17469
  MarkNamespace = class {
@@ -17476,6 +17496,7 @@ var init_dist = __esm({
17476
17496
  let done = false;
17477
17497
  let pollTimer = null;
17478
17498
  let pollInterval = null;
17499
+ let unsubscribeResource = this.transport.subscribeToResource(resourceId22);
17479
17500
  const cleanup = () => {
17480
17501
  done = true;
17481
17502
  if (pollTimer) {
@@ -17486,6 +17507,10 @@ var init_dist = __esm({
17486
17507
  clearInterval(pollInterval);
17487
17508
  pollInterval = null;
17488
17509
  }
17510
+ if (unsubscribeResource) {
17511
+ unsubscribeResource();
17512
+ unsubscribeResource = null;
17513
+ }
17489
17514
  };
17490
17515
  const resetPollTimer = (jobId) => {
17491
17516
  if (pollTimer) clearTimeout(pollTimer);
@@ -17798,6 +17823,7 @@ var init_dist = __esm({
17798
17823
  let done = false;
17799
17824
  let pollTimer = null;
17800
17825
  let pollInterval = null;
17826
+ let unsubscribeResource = this.transport.subscribeToResource(resourceId22);
17801
17827
  const cleanup = () => {
17802
17828
  done = true;
17803
17829
  if (pollTimer) {
@@ -17808,6 +17834,10 @@ var init_dist = __esm({
17808
17834
  clearInterval(pollInterval);
17809
17835
  pollInterval = null;
17810
17836
  }
17837
+ if (unsubscribeResource) {
17838
+ unsubscribeResource();
17839
+ unsubscribeResource = null;
17840
+ }
17811
17841
  };
17812
17842
  const resetPollTimer = (jid) => {
17813
17843
  if (pollTimer) clearTimeout(pollTimer);
@@ -17881,6 +17911,7 @@ var init_dist = __esm({
17881
17911
  referenceId: annotationId22,
17882
17912
  title: options.title,
17883
17913
  prompt: options.prompt,
17914
+ entityTypes: options.entityTypes,
17884
17915
  language: options.language,
17885
17916
  sourceLanguage: options.sourceLanguage,
17886
17917
  temperature: options.temperature,
@@ -17968,6 +17999,9 @@ var init_dist = __esm({
17968
17999
  await this.transport.emit("frame:add-entity-type", { tag });
17969
18000
  }
17970
18001
  }
18002
+ async addTagSchema(schema2) {
18003
+ await this.transport.emit("frame:add-tag-schema", { schema: schema2 });
18004
+ }
17971
18005
  };
17972
18006
  JobNamespace = class {
17973
18007
  constructor(transport, bus) {
@@ -33017,7 +33051,7 @@ var require_package = __commonJS({
33017
33051
  "package.json"(exports, module) {
33018
33052
  module.exports = {
33019
33053
  name: "@semiont/cli",
33020
- version: "0.5.2",
33054
+ version: "0.5.3",
33021
33055
  description: "Semiont CLI - Unified environment management tool",
33022
33056
  _comment: "AWS SDK dependencies (@aws-sdk/*) are only used by platforms/aws",
33023
33057
  type: "module",
@@ -33064,13 +33098,13 @@ var require_package = __commonJS({
33064
33098
  "test:watch:unit": "vitest --watch --config vitest.config.unit.ts"
33065
33099
  },
33066
33100
  dependencies: {
33067
- "@semiont/api-client": "0.5.2",
33068
- "@semiont/content": "0.5.2",
33069
- "@semiont/core": "0.5.2",
33070
- "@semiont/event-sourcing": "0.5.2",
33071
- "@semiont/graph": "0.5.2",
33072
- "@semiont/sdk": "0.5.2",
33073
- "@semiont/make-meaning": "0.5.2",
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",
33074
33108
  arg: "^5.0.2",
33075
33109
  argon2: "^0.44.0",
33076
33110
  express: "^5.2.1",
@@ -38082,7 +38116,7 @@ async function generateGlobalHelp() {
38082
38116
  }
38083
38117
 
38084
38118
  // src/cli.ts
38085
- var VERSION = "0.5.2";
38119
+ var VERSION = "0.5.3";
38086
38120
  function printVersion() {
38087
38121
  console.log(`Semiont CLI v${VERSION}`);
38088
38122
  }
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-BVOR3arc.js";import{r}from"./vendor-DJo4KD8w.js";import{g as v,C as N,e as k,s as C,d as E}from"./privacy-Kk_oWnpO.js";import{u as D}from"./i18n-BbpF47i1.js";import{F as L,a as g}from"./XMarkIcon-KMKD47CF.js";function R({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"}))}const M=r.forwardRef(R);function S({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495"}))}const A=r.forwardRef(S);function F({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"}))}const $=r.forwardRef(F);function H({isOpen:a,onClose:n}){const{t:l}=D(),t=(s,i)=>l(`CookiePreferences.${s}`,i),[o,m]=r.useState(null),[d,u]=r.useState(!1),[b,x]=r.useState(!1),f=r.useRef(n);r.useEffect(()=>{f.current=n}),r.useEffect(()=>{if(a){const s=v();m(s||{necessary:!0,analytics:!1,marketing:!1,preferences:!1,timestamp:new Date().toISOString(),version:"1.0"})}},[a]),r.useEffect(()=>{if(!a)return;const s=i=>{i.key==="Escape"&&f.current()};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s)}},[a]);const p=async()=>{o&&(u(!0),C(o),u(!1),n())},j=s=>{s==="necessary"||!o||m(i=>i?{...i,[s]:!i[s]}:null)},y=()=>{const s=k(),i=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),h=URL.createObjectURL(i),c=document.createElement("a");c.href=h,c.download=`semiont-user-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(h)},w=()=>{E()};return!a||!o?null:e.jsxs("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75",onClick:n}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative",children:[e.jsx("button",{onClick:n,className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1","aria-label":"Close",children:e.jsx(L,{className:"h-6 w-6"})}),e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(A,{className:"h-6 w-6 text-blue-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("title")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("description")})})]})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-gray-50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx($,{className:"h-5 w-5 text-green-500 mr-2"}),e.jsx("span",{className:"text-sm font-medium text-gray-900",children:t("currentSettings")})]}),e.jsxs("div",{className:"mt-2 text-xs text-gray-600",children:[e.jsx("p",{children:t("lastUpdated",{date:new Date(o.timestamp).toLocaleDateString()})}),e.jsx("p",{children:t("version",{version:o.version})})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900",children:t("cookieCategories")}),N.map(s=>e.jsx("div",{className:"border border-gray-200 rounded-lg p-4",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{id:`pref-${s.id}`,type:"checkbox",checked:o[s.id]||!1,onChange:()=>j(s.id),disabled:s.required||d,className:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50"}),e.jsxs("label",{htmlFor:`pref-${s.id}`,className:"ml-3 text-sm font-medium text-gray-900 cursor-pointer",children:[s.name,s.required&&e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:t("required")})]})]}),e.jsx("p",{className:"mt-1 text-sm text-gray-600",children:s.description}),e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-blue-600 cursor-pointer hover:text-blue-800",children:t("viewCookies",{count:s.cookies.length})}),e.jsx("div",{className:"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2",children:e.jsx("ul",{className:"list-disc list-inside space-y-1",children:s.cookies.map(i=>e.jsx("li",{children:i},i))})})]})]})})},s.id))]}),e.jsxs("div",{className:"border-t border-gray-200 pt-6",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900 mb-4",children:t("dataManagement")}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("button",{onClick:y,className:"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:[e.jsx(M,{className:"h-4 w-4 mr-2"}),t("exportMyData")]}),e.jsxs("button",{onClick:()=>x(!0),className:"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500",children:[e.jsx(g,{className:"h-4 w-4 mr-2"}),t("deleteAllData")]})]}),e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:t("dataManagementDescription")})]})]})}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-2 justify-center",children:[e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!1,marketing:!1,preferences:!1}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("rejectAll")}),e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!0,marketing:!0,preferences:!0}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("acceptAll")})]}),e.jsxs("div",{className:"mt-6 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:p,disabled:d,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50",children:t(d?"saving":"saveChanges")}),e.jsx("button",{type:"button",onClick:n,className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]}),b&&e.jsx("div",{className:"fixed inset-0 z-60 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75"}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6",children:[e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(g,{className:"h-6 w-6 text-red-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("deleteConfirmTitle")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("deleteConfirmDescription")})})]})]}),e.jsxs("div",{className:"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:w,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm",children:t("deleteAllData")}),e.jsx("button",{type:"button",onClick:()=>x(!1),className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]})})]})}export{H as C,$ as F};
2
- //# sourceMappingURL=CookiePreferences-5feiOAX4.js.map
1
+ import{j as e}from"./index-QjYSiWWG.js";import{r}from"./vendor-DJo4KD8w.js";import{g as v,C as N,e as k,s as C,d as E}from"./privacy-Rbj4Ycw9.js";import{u as D}from"./i18n-BbpF47i1.js";import{F as L,a as g}from"./XMarkIcon-KMKD47CF.js";function R({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"}))}const M=r.forwardRef(R);function S({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495"}))}const A=r.forwardRef(S);function F({title:a,titleId:n,...l},t){return r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":n},l),a?r.createElement("title",{id:n},a):null,r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"}))}const $=r.forwardRef(F);function H({isOpen:a,onClose:n}){const{t:l}=D(),t=(s,i)=>l(`CookiePreferences.${s}`,i),[o,m]=r.useState(null),[d,u]=r.useState(!1),[b,x]=r.useState(!1),f=r.useRef(n);r.useEffect(()=>{f.current=n}),r.useEffect(()=>{if(a){const s=v();m(s||{necessary:!0,analytics:!1,marketing:!1,preferences:!1,timestamp:new Date().toISOString(),version:"1.0"})}},[a]),r.useEffect(()=>{if(!a)return;const s=i=>{i.key==="Escape"&&f.current()};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s)}},[a]);const p=async()=>{o&&(u(!0),C(o),u(!1),n())},j=s=>{s==="necessary"||!o||m(i=>i?{...i,[s]:!i[s]}:null)},y=()=>{const s=k(),i=new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),h=URL.createObjectURL(i),c=document.createElement("a");c.href=h,c.download=`semiont-user-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(c),c.click(),document.body.removeChild(c),URL.revokeObjectURL(h)},w=()=>{E()};return!a||!o?null:e.jsxs("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75",onClick:n}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative",children:[e.jsx("button",{onClick:n,className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1","aria-label":"Close",children:e.jsx(L,{className:"h-6 w-6"})}),e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(A,{className:"h-6 w-6 text-blue-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("title")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("description")})})]})]}),e.jsx("div",{className:"mt-6",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"bg-gray-50 rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx($,{className:"h-5 w-5 text-green-500 mr-2"}),e.jsx("span",{className:"text-sm font-medium text-gray-900",children:t("currentSettings")})]}),e.jsxs("div",{className:"mt-2 text-xs text-gray-600",children:[e.jsx("p",{children:t("lastUpdated",{date:new Date(o.timestamp).toLocaleDateString()})}),e.jsx("p",{children:t("version",{version:o.version})})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900",children:t("cookieCategories")}),N.map(s=>e.jsx("div",{className:"border border-gray-200 rounded-lg p-4",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{id:`pref-${s.id}`,type:"checkbox",checked:o[s.id]||!1,onChange:()=>j(s.id),disabled:s.required||d,className:"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50"}),e.jsxs("label",{htmlFor:`pref-${s.id}`,className:"ml-3 text-sm font-medium text-gray-900 cursor-pointer",children:[s.name,s.required&&e.jsx("span",{className:"text-xs text-gray-500 ml-1",children:t("required")})]})]}),e.jsx("p",{className:"mt-1 text-sm text-gray-600",children:s.description}),e.jsxs("details",{className:"mt-2",children:[e.jsx("summary",{className:"text-xs text-blue-600 cursor-pointer hover:text-blue-800",children:t("viewCookies",{count:s.cookies.length})}),e.jsx("div",{className:"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2",children:e.jsx("ul",{className:"list-disc list-inside space-y-1",children:s.cookies.map(i=>e.jsx("li",{children:i},i))})})]})]})})},s.id))]}),e.jsxs("div",{className:"border-t border-gray-200 pt-6",children:[e.jsx("h4",{className:"text-base font-medium text-gray-900 mb-4",children:t("dataManagement")}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("button",{onClick:y,className:"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",children:[e.jsx(M,{className:"h-4 w-4 mr-2"}),t("exportMyData")]}),e.jsxs("button",{onClick:()=>x(!0),className:"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500",children:[e.jsx(g,{className:"h-4 w-4 mr-2"}),t("deleteAllData")]})]}),e.jsx("p",{className:"mt-2 text-xs text-gray-500",children:t("dataManagementDescription")})]})]})}),e.jsxs("div",{className:"mt-6 flex flex-wrap gap-2 justify-center",children:[e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!1,marketing:!1,preferences:!1}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("rejectAll")}),e.jsx("button",{type:"button",onClick:()=>{m(s=>s?{...s,necessary:!0,analytics:!0,marketing:!0,preferences:!0}:null)},disabled:d,className:"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors",children:t("acceptAll")})]}),e.jsxs("div",{className:"mt-6 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:p,disabled:d,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50",children:t(d?"saving":"saveChanges")}),e.jsx("button",{type:"button",onClick:n,className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]}),b&&e.jsx("div",{className:"fixed inset-0 z-60 overflow-y-auto",children:e.jsxs("div",{className:"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[e.jsx("div",{className:"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75"}),e.jsxs("div",{className:"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6",children:[e.jsxs("div",{className:"sm:flex sm:items-start",children:[e.jsx("div",{className:"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10",children:e.jsx(g,{className:"h-6 w-6 text-red-600"})}),e.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[e.jsx("h3",{className:"text-lg leading-6 font-medium text-gray-900",children:t("deleteConfirmTitle")}),e.jsx("div",{className:"mt-2",children:e.jsx("p",{className:"text-sm text-gray-500",children:t("deleteConfirmDescription")})})]})]}),e.jsxs("div",{className:"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse",children:[e.jsx("button",{type:"button",onClick:w,className:"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm",children:t("deleteAllData")}),e.jsx("button",{type:"button",onClick:()=>x(!1),className:"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm",children:t("cancel")})]})]})]})})]})}export{H as C,$ as F};
2
+ //# sourceMappingURL=CookiePreferences-BizeRUGG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CookiePreferences-5feiOAX4.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowDownTrayIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/CogIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js","../../src/components/CookiePreferences.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowDownTrayIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowDownTrayIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CogIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CogIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldCheckIcon);\nexport default ForwardRef;","\"use client\";\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n getCookieConsent,\n setCookieConsent,\n COOKIE_CATEGORIES,\n CookieConsent,\n exportUserData,\n deleteAllUserData,\n type CookieCategory\n} from '@/lib/cookies';\nimport {\n CogIcon,\n TrashIcon,\n ArrowDownTrayIcon,\n ShieldCheckIcon,\n XMarkIcon\n} from '@heroicons/react/24/outline';\n\ninterface CookiePreferencesProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport function CookiePreferences({ isOpen, onClose }: CookiePreferencesProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`CookiePreferences.${k}`, p as any) as string;\n const [consent, setConsent] = useState<CookieConsent | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n // Store callback in ref to avoid including in dependency arrays\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n });\n\n useEffect(() => {\n if (isOpen) {\n const currentConsent = getCookieConsent();\n setConsent(currentConsent || {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false,\n timestamp: new Date().toISOString(),\n version: '1.0'\n });\n }\n }, [isOpen]);\n\n // Handle ESC key to close modal\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onCloseRef.current();\n }\n };\n\n document.addEventListener('keydown', handleEsc);\n return () => {\n document.removeEventListener('keydown', handleEsc);\n };\n }, [isOpen]);\n\n const handleSave = async () => {\n if (!consent) return;\n \n setIsLoading(true);\n setCookieConsent(consent);\n setIsLoading(false);\n onClose();\n };\n\n const handleCategoryToggle = (categoryId: keyof Omit<CookieConsent, 'timestamp' | 'version'>) => {\n if (categoryId === 'necessary' || !consent) return;\n \n setConsent(prev => prev ? {\n ...prev,\n [categoryId]: !prev[categoryId]\n } : null);\n };\n\n const handleExportData = () => {\n const data = exportUserData();\n const blob = new Blob([JSON.stringify(data, null, 2)], { \n type: 'application/json' \n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `semiont-user-data-${new Date().toISOString().split('T')[0]}.json`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n const handleDeleteAllData = () => {\n deleteAllUserData();\n };\n\n if (!isOpen || !consent) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n {/* Background overlay */}\n <div \n className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\"\n onClick={onClose}\n />\n\n {/* Modal panel */}\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative\">\n {/* Close button in upper right */}\n <button\n onClick={onClose}\n className=\"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-6 w-6\" />\n </button>\n\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10\">\n <CogIcon className=\"h-6 w-6 text-blue-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('title')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('description')}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <div className=\"space-y-6\">\n {/* Current consent info */}\n <div className=\"bg-gray-50 rounded-lg p-4\">\n <div className=\"flex items-center\">\n <ShieldCheckIcon className=\"h-5 w-5 text-green-500 mr-2\" />\n <span className=\"text-sm font-medium text-gray-900\">\n {t('currentSettings')}\n </span>\n </div>\n <div className=\"mt-2 text-xs text-gray-600\">\n <p>{t('lastUpdated', { date: new Date(consent.timestamp).toLocaleDateString() })}</p>\n <p>{t('version', { version: consent.version })}</p>\n </div>\n </div>\n\n {/* Cookie categories */}\n <div className=\"space-y-4\">\n <h4 className=\"text-base font-medium text-gray-900\">\n {t('cookieCategories')}\n </h4>\n \n {COOKIE_CATEGORIES.map((category: CookieCategory) => (\n <div key={category.id} className=\"border border-gray-200 rounded-lg p-4\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <div className=\"flex items-center\">\n <input\n id={`pref-${category.id}`}\n type=\"checkbox\"\n checked={consent[category.id] || false}\n onChange={() => handleCategoryToggle(category.id)}\n disabled={category.required || isLoading}\n className=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50\"\n />\n <label\n htmlFor={`pref-${category.id}`}\n className=\"ml-3 text-sm font-medium text-gray-900 cursor-pointer\"\n >\n {category.name}\n {category.required && (\n <span className=\"text-xs text-gray-500 ml-1\">{t('required')}</span>\n )}\n </label>\n </div>\n <p className=\"mt-1 text-sm text-gray-600\">\n {category.description}\n </p>\n <details className=\"mt-2\">\n <summary className=\"text-xs text-blue-600 cursor-pointer hover:text-blue-800\">\n {t('viewCookies', { count: category.cookies.length })}\n </summary>\n <div className=\"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2\">\n <ul className=\"list-disc list-inside space-y-1\">\n {category.cookies.map(cookie => (\n <li key={cookie}>{cookie}</li>\n ))}\n </ul>\n </div>\n </details>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Data management section */}\n <div className=\"border-t border-gray-200 pt-6\">\n <h4 className=\"text-base font-medium text-gray-900 mb-4\">\n {t('dataManagement')}\n </h4>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <button\n onClick={handleExportData}\n className=\"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n <ArrowDownTrayIcon className=\"h-4 w-4 mr-2\" />\n {t('exportMyData')}\n </button>\n\n <button\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500\"\n >\n <TrashIcon className=\"h-4 w-4 mr-2\" />\n {t('deleteAllData')}\n </button>\n </div>\n\n <p className=\"mt-2 text-xs text-gray-500\">\n {t('dataManagementDescription')}\n </p>\n </div>\n </div>\n </div>\n\n {/* Quick Actions */}\n <div className=\"mt-6 flex flex-wrap gap-2 justify-center\">\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('rejectAll')}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: true,\n marketing: true,\n preferences: true\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('acceptAll')}\n </button>\n </div>\n\n {/* Action buttons */}\n <div className=\"mt-6 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={isLoading}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50\"\n >\n {isLoading ? t('saving') : t('saveChanges')}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n\n {/* Delete confirmation modal */}\n {showDeleteConfirm && (\n <div className=\"fixed inset-0 z-60 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n <div className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\" />\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6\">\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\">\n <TrashIcon className=\"h-6 w-6 text-red-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('deleteConfirmTitle')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('deleteConfirmDescription')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleDeleteAllData}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm\"\n >\n {t('deleteAllData')}\n </button>\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(false)}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default CookiePreferences;"],"names":["ArrowDownTrayIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","CogIcon","ShieldCheckIcon","CookiePreferences","isOpen","onClose","_t","useTranslation","k","p","consent","setConsent","useState","isLoading","setIsLoading","showDeleteConfirm","setShowDeleteConfirm","onCloseRef","useRef","useEffect","currentConsent","getCookieConsent","handleEsc","event","handleSave","setCookieConsent","handleCategoryToggle","categoryId","prev","handleExportData","data","exportUserData","blob","url","a","handleDeleteAllData","deleteAllUserData","jsxs","jsx","XMarkIcon","COOKIE_CATEGORIES","category","cookie","TrashIcon"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"CookiePreferences-BizeRUGG.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ArrowDownTrayIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/CogIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ShieldCheckIcon.js","../../src/components/CookiePreferences.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ArrowDownTrayIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ArrowDownTrayIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction CogIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(CogIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ShieldCheckIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ShieldCheckIcon);\nexport default ForwardRef;","\"use client\";\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n getCookieConsent,\n setCookieConsent,\n COOKIE_CATEGORIES,\n CookieConsent,\n exportUserData,\n deleteAllUserData,\n type CookieCategory\n} from '@/lib/cookies';\nimport {\n CogIcon,\n TrashIcon,\n ArrowDownTrayIcon,\n ShieldCheckIcon,\n XMarkIcon\n} from '@heroicons/react/24/outline';\n\ninterface CookiePreferencesProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport function CookiePreferences({ isOpen, onClose }: CookiePreferencesProps) {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`CookiePreferences.${k}`, p as any) as string;\n const [consent, setConsent] = useState<CookieConsent | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n // Store callback in ref to avoid including in dependency arrays\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n });\n\n useEffect(() => {\n if (isOpen) {\n const currentConsent = getCookieConsent();\n setConsent(currentConsent || {\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false,\n timestamp: new Date().toISOString(),\n version: '1.0'\n });\n }\n }, [isOpen]);\n\n // Handle ESC key to close modal\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onCloseRef.current();\n }\n };\n\n document.addEventListener('keydown', handleEsc);\n return () => {\n document.removeEventListener('keydown', handleEsc);\n };\n }, [isOpen]);\n\n const handleSave = async () => {\n if (!consent) return;\n \n setIsLoading(true);\n setCookieConsent(consent);\n setIsLoading(false);\n onClose();\n };\n\n const handleCategoryToggle = (categoryId: keyof Omit<CookieConsent, 'timestamp' | 'version'>) => {\n if (categoryId === 'necessary' || !consent) return;\n \n setConsent(prev => prev ? {\n ...prev,\n [categoryId]: !prev[categoryId]\n } : null);\n };\n\n const handleExportData = () => {\n const data = exportUserData();\n const blob = new Blob([JSON.stringify(data, null, 2)], { \n type: 'application/json' \n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `semiont-user-data-${new Date().toISOString().split('T')[0]}.json`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n const handleDeleteAllData = () => {\n deleteAllUserData();\n };\n\n if (!isOpen || !consent) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n {/* Background overlay */}\n <div \n className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\"\n onClick={onClose}\n />\n\n {/* Modal panel */}\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full sm:p-6 relative\">\n {/* Close button in upper right */}\n <button\n onClick={onClose}\n className=\"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded-lg p-1\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-6 w-6\" />\n </button>\n\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10\">\n <CogIcon className=\"h-6 w-6 text-blue-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left flex-1 pr-8\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('title')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('description')}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <div className=\"space-y-6\">\n {/* Current consent info */}\n <div className=\"bg-gray-50 rounded-lg p-4\">\n <div className=\"flex items-center\">\n <ShieldCheckIcon className=\"h-5 w-5 text-green-500 mr-2\" />\n <span className=\"text-sm font-medium text-gray-900\">\n {t('currentSettings')}\n </span>\n </div>\n <div className=\"mt-2 text-xs text-gray-600\">\n <p>{t('lastUpdated', { date: new Date(consent.timestamp).toLocaleDateString() })}</p>\n <p>{t('version', { version: consent.version })}</p>\n </div>\n </div>\n\n {/* Cookie categories */}\n <div className=\"space-y-4\">\n <h4 className=\"text-base font-medium text-gray-900\">\n {t('cookieCategories')}\n </h4>\n \n {COOKIE_CATEGORIES.map((category: CookieCategory) => (\n <div key={category.id} className=\"border border-gray-200 rounded-lg p-4\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <div className=\"flex items-center\">\n <input\n id={`pref-${category.id}`}\n type=\"checkbox\"\n checked={consent[category.id] || false}\n onChange={() => handleCategoryToggle(category.id)}\n disabled={category.required || isLoading}\n className=\"h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded-sm disabled:opacity-50\"\n />\n <label\n htmlFor={`pref-${category.id}`}\n className=\"ml-3 text-sm font-medium text-gray-900 cursor-pointer\"\n >\n {category.name}\n {category.required && (\n <span className=\"text-xs text-gray-500 ml-1\">{t('required')}</span>\n )}\n </label>\n </div>\n <p className=\"mt-1 text-sm text-gray-600\">\n {category.description}\n </p>\n <details className=\"mt-2\">\n <summary className=\"text-xs text-blue-600 cursor-pointer hover:text-blue-800\">\n {t('viewCookies', { count: category.cookies.length })}\n </summary>\n <div className=\"mt-1 text-xs text-gray-500 bg-gray-50 rounded-sm p-2\">\n <ul className=\"list-disc list-inside space-y-1\">\n {category.cookies.map(cookie => (\n <li key={cookie}>{cookie}</li>\n ))}\n </ul>\n </div>\n </details>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Data management section */}\n <div className=\"border-t border-gray-200 pt-6\">\n <h4 className=\"text-base font-medium text-gray-900 mb-4\">\n {t('dataManagement')}\n </h4>\n\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <button\n onClick={handleExportData}\n className=\"flex items-center justify-center px-4 py-2 border border-gray-300 rounded-md shadow-xs text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n <ArrowDownTrayIcon className=\"h-4 w-4 mr-2\" />\n {t('exportMyData')}\n </button>\n\n <button\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center justify-center px-4 py-2 border border-red-300 rounded-md shadow-xs text-sm font-medium text-red-700 bg-white hover:bg-red-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500\"\n >\n <TrashIcon className=\"h-4 w-4 mr-2\" />\n {t('deleteAllData')}\n </button>\n </div>\n\n <p className=\"mt-2 text-xs text-gray-500\">\n {t('dataManagementDescription')}\n </p>\n </div>\n </div>\n </div>\n\n {/* Quick Actions */}\n <div className=\"mt-6 flex flex-wrap gap-2 justify-center\">\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: false,\n marketing: false,\n preferences: false\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('rejectAll')}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setConsent(prev => prev ? {\n ...prev,\n necessary: true,\n analytics: true,\n marketing: true,\n preferences: true\n } : null);\n }}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 transition-colors\"\n >\n {t('acceptAll')}\n </button>\n </div>\n\n {/* Action buttons */}\n <div className=\"mt-6 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={isLoading}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50\"\n >\n {isLoading ? t('saving') : t('saveChanges')}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n\n {/* Delete confirmation modal */}\n {showDeleteConfirm && (\n <div className=\"fixed inset-0 z-60 overflow-y-auto\">\n <div className=\"flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\">\n <div className=\"fixed inset-0 transition-opacity bg-gray-500 bg-opacity-75\" />\n <div className=\"inline-block align-bottom bg-white rounded-lg px-4 pt-5 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full sm:p-6\">\n <div className=\"sm:flex sm:items-start\">\n <div className=\"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\">\n <TrashIcon className=\"h-6 w-6 text-red-600\" />\n </div>\n <div className=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left\">\n <h3 className=\"text-lg leading-6 font-medium text-gray-900\">\n {t('deleteConfirmTitle')}\n </h3>\n <div className=\"mt-2\">\n <p className=\"text-sm text-gray-500\">\n {t('deleteConfirmDescription')}\n </p>\n </div>\n </div>\n </div>\n <div className=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n <button\n type=\"button\"\n onClick={handleDeleteAllData}\n className=\"w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm\"\n >\n {t('deleteAllData')}\n </button>\n <button\n type=\"button\"\n onClick={() => setShowDeleteConfirm(false)}\n className=\"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:w-auto sm:text-sm\"\n >\n {t('cancel')}\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default CookiePreferences;"],"names":["ArrowDownTrayIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","CogIcon","ShieldCheckIcon","CookiePreferences","isOpen","onClose","_t","useTranslation","k","p","consent","setConsent","useState","isLoading","setIsLoading","showDeleteConfirm","setShowDeleteConfirm","onCloseRef","useRef","useEffect","currentConsent","getCookieConsent","handleEsc","event","handleSave","setCookieConsent","handleCategoryToggle","categoryId","prev","handleExportData","data","exportUserData","blob","url","a","handleDeleteAllData","deleteAllUserData","jsxs","jsx","XMarkIcon","COOKIE_CATEGORIES","category","cookie","TrashIcon"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -1,2 +1,2 @@
1
- import{r as l}from"./vendor-DJo4KD8w.js";import{H as lt,I as dt,j as u}from"./index-BVOR3arc.js";import"./i18n-BbpF47i1.js";function ut(t,d,a,o,s=1){const w=Math.min(t.startX,t.endX),j=Math.min(t.startY,t.endY),S=Math.max(t.startX,t.endX),v=Math.max(t.startY,t.endY),F=w/s,D=(S-w)/s,E=o-v/s,h=(v-j)/s;return{page:d,x:Math.round(F),y:Math.round(E),width:Math.round(D),height:Math.round(h)}}function B(t,d,a=1){const o=t.x*a,s=t.width*a,w=(d-t.y-t.height)*a,j=t.height*a;return{x:o,y:w,width:s,height:j}}function ht(t){return`page=${t.page}&viewrect=${t.x},${t.y},${t.width},${t.height}`}function V(t){try{const d=t.match(/page=(\d+)/);if(!d)return null;const a=parseInt(d[1],10),o=t.match(/viewrect=([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return o?{page:a,x:parseFloat(o[1]),y:parseFloat(o[2]),width:parseFloat(o[3]),height:parseFloat(o[4])}:null}catch{return null}}function ft(t){const d=t.match(/page=(\d+)/);return d?parseInt(d[1],10):null}async function gt(){return typeof window<"u"&&window.pdfjsLib?window.pdfjsLib:new Promise((t,d)=>{const a=document.createElement("script");a.src="/pdfjs/pdf.min.mjs",a.type="module",a.onload=()=>{const o=window.pdfjsLib;if(!o){d(new Error("PDF.js loaded but pdfjsLib not available"));return}o.GlobalWorkerOptions.workerSrc="/pdfjs/pdf.worker.min.mjs",t(o)},a.onerror=()=>{d(new Error("Failed to load PDF.js from /pdfjs/pdf.min.mjs"))},document.head.appendChild(a)})}async function pt(t){return(await gt()).getDocument({url:t}).promise}async function mt(t,d=1){const a=t.getViewport({scale:d}),o=document.createElement("canvas"),s=o.getContext("2d");if(!s)throw new Error("Failed to get 2D context");return o.width=a.width,o.height=a.height,await t.render({canvasContext:s,viewport:a}).promise,{dataUrl:o.toDataURL("image/png"),width:a.width,height:a.height}}function J(t){if(!t)return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"};switch(t){case"highlighting":return{stroke:"rgb(250, 204, 21)",fill:"rgba(250, 204, 21, 0.3)"};case"linking":return{stroke:"rgb(59, 130, 246)",fill:"rgba(59, 130, 246, 0.2)"};case"assessing":return{stroke:"rgb(239, 68, 68)",fill:"rgba(239, 68, 68, 0.2)"};case"commenting":return{stroke:"rgb(255, 255, 255)",fill:"rgba(255, 255, 255, 0.2)"};default:return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"}}}function yt({pdfUrl:t,existingAnnotations:d=[],drawingMode:a,selectedMotivation:o,session:s,hoveredAnnotationId:w,selectedAnnotationId:j,hoverDelayMs:S=150}){const[v,F]=l.useState(null),[D,E]=l.useState(0),[h,H]=l.useState(1),[N,K]=l.useState(null),[W,C]=l.useState(!0),[A,L]=l.useState(null),[f,Q]=l.useState(null),[p,U]=l.useState(null),[z]=l.useState(1.5),[M,b]=l.useState(!1),[r,y]=l.useState(null),Z=l.useRef(null),g=l.useRef(null);l.useEffect(()=>{let e=!1;async function n(){try{C(!0),L(null);const c=await pt(t);if(e)return;F(c),E(c.numPages),C(!1)}catch(c){if(e)return;console.error("Error loading PDF:",c),L("Failed to load PDF"),C(!1)}}return n(),()=>{e=!0}},[t]),l.useEffect(()=>{if(!v)return;let e=!1;const n=v;async function c(){try{const i=await n.getPage(h);if(e)return;const m=i.getViewport({scale:1});Q({width:m.width,height:m.height});const{dataUrl:x}=await mt(i,z);if(e)return;K(x)}catch(i){if(e)return;console.error("Error loading page:",i),L("Failed to load page")}}return c(),()=>{e=!0}},[v,h,z]),l.useEffect(()=>{const e=()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})};e();let n=null;try{n=new ResizeObserver(e),g.current&&n.observe(g.current)}catch{console.warn("ResizeObserver not supported, falling back to window resize listener"),window.addEventListener("resize",e)}return()=>{n?n.disconnect():window.removeEventListener("resize",e)}},[N]);const tt=l.useCallback(e=>{if(!a||!g.current)return;const n=g.current.getBoundingClientRect(),c=e.clientX-n.left,i=e.clientY-n.top;b(!0),y({startX:c,startY:i,endX:c,endY:i})},[a]),et=l.useCallback(e=>{if(!M||!r||!g.current)return;const n=g.current.getBoundingClientRect();y({...r,endX:e.clientX-n.left,endY:e.clientY-n.top})},[M,r]),nt=l.useCallback(()=>{if(!M||!r||!f||!p||!s){b(!1),y(null);return}if(Math.sqrt(Math.pow(r.endX-r.startX,2)+Math.pow(r.endY-r.startY,2))<10){if(d.length>0){const k=$.find(T=>{const Y=I(T.target);if(!Y)return!1;const _=V(Y.value);if(!_)return!1;const P=B(_,f.height,1),R=p.width/f.width,q=p.height/f.height,O=P.x*R,G=P.y*q,it=P.width*R,ct=P.height*q;return r.endX>=O&&r.endX<=O+it&&r.endY>=G&&r.endY<=G+ct});if(k){s==null||s.client.browse.click(k.id,k.motivation),b(!1),y(null);return}}b(!1),y(null);return}const c=f.width/p.width,i=f.height/p.height,m={startX:r.startX*c,startY:r.startY*i,endX:r.endX*c,endY:r.endY*i},x=ut(m,h,f.width,f.height,1),X=ht(x);o&&s.client.mark.request({type:"FragmentSelector",conformsTo:"http://tools.ietf.org/rfc/rfc3778",value:X},o),b(!1)},[M,r,h,f,p,o,d]),I=e=>{const n=lt(e);if(!n)return null;const i=(Array.isArray(n)?n:[n]).find(m=>m.type==="FragmentSelector");return!i||i.type!=="FragmentSelector"?null:i},$=d.filter(e=>{const n=I(e.target);return n?ft(n.value)===h:!1}),{handleMouseEnter:rt,handleMouseLeave:at}=l.useMemo(()=>dt(e=>s==null?void 0:s.client.beckon.hover(e),S),[s,S]),{stroke:ot,fill:st}=J(o??null);return A?u.jsx("div",{className:"semiont-pdf-annotation-canvas__error",children:A}):u.jsxs("div",{className:"semiont-pdf-annotation-canvas",children:[W&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__loading",children:"Loading PDF..."}),u.jsxs("div",{ref:Z,className:"semiont-pdf-annotation-canvas__container",style:{display:W?"none":void 0},onMouseDown:tt,onMouseMove:et,onMouseUp:nt,onMouseLeave:()=>{M&&(b(!1),y(null))},"data-drawing-mode":a||"none",children:[N&&u.jsx("img",{ref:g,src:N,alt:`PDF page ${h}`,className:"semiont-pdf-annotation-canvas__image",draggable:!1,style:{pointerEvents:"none"},onLoad:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})})})}}),p&&f&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay-container",children:u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay",children:u.jsxs("svg",{className:"semiont-pdf-annotation-canvas__svg",width:p.width,height:p.height,children:[$.map(e=>{const n=I(e.target);if(!n)return null;const c=V(n.value);if(!c)return null;const i=B(c,f.height,1),m=p.width/f.width,x=p.height/f.height,X=e.id===w,k=e.id===j,T=e.motivation,{stroke:Y,fill:_}=J(T);return u.jsx("rect",{x:i.x*m,y:i.y*x,width:i.width*m,height:i.height*x,stroke:Y,strokeWidth:k?4:X?3:2,fill:_,style:{pointerEvents:"auto",cursor:"pointer",opacity:k?1:X?.9:.7},onClick:()=>s==null?void 0:s.client.browse.click(e.id,e.motivation),onMouseEnter:()=>rt(e.id),onMouseLeave:at},e.id)}),r&&(()=>{const e=Math.min(r.startX,r.endX),n=Math.min(r.startY,r.endY),c=Math.abs(r.endX-r.startX),i=Math.abs(r.endY-r.startY);return u.jsx("rect",{x:e,y:n,width:c,height:i,stroke:ot,strokeWidth:2,strokeDasharray:"5,5",fill:st,pointerEvents:"none"})})()]})})})]}),D>0&&u.jsxs("div",{className:"semiont-pdf-annotation-canvas__controls",children:[u.jsx("button",{disabled:h<=1,onClick:()=>H(h-1),className:"semiont-pdf-annotation-canvas__button",children:"Previous"}),u.jsxs("span",{className:"semiont-pdf-annotation-canvas__page-info",children:["Page ",h," of ",D]}),u.jsx("button",{disabled:h>=D,onClick:()=>H(h+1),className:"semiont-pdf-annotation-canvas__button",children:"Next"})]})]})}export{yt as PdfAnnotationCanvas};
2
- //# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H-Cxm4Es_X.js.map
1
+ import{r as l}from"./vendor-DJo4KD8w.js";import{I as lt,J as dt,j as u}from"./index-QjYSiWWG.js";import"./i18n-BbpF47i1.js";function ut(t,d,a,o,s=1){const w=Math.min(t.startX,t.endX),j=Math.min(t.startY,t.endY),S=Math.max(t.startX,t.endX),v=Math.max(t.startY,t.endY),F=w/s,D=(S-w)/s,E=o-v/s,h=(v-j)/s;return{page:d,x:Math.round(F),y:Math.round(E),width:Math.round(D),height:Math.round(h)}}function B(t,d,a=1){const o=t.x*a,s=t.width*a,w=(d-t.y-t.height)*a,j=t.height*a;return{x:o,y:w,width:s,height:j}}function ht(t){return`page=${t.page}&viewrect=${t.x},${t.y},${t.width},${t.height}`}function J(t){try{const d=t.match(/page=(\d+)/);if(!d)return null;const a=parseInt(d[1],10),o=t.match(/viewrect=([\d.]+),([\d.]+),([\d.]+),([\d.]+)/);return o?{page:a,x:parseFloat(o[1]),y:parseFloat(o[2]),width:parseFloat(o[3]),height:parseFloat(o[4])}:null}catch{return null}}function ft(t){const d=t.match(/page=(\d+)/);return d?parseInt(d[1],10):null}async function gt(){return typeof window<"u"&&window.pdfjsLib?window.pdfjsLib:new Promise((t,d)=>{const a=document.createElement("script");a.src="/pdfjs/pdf.min.mjs",a.type="module",a.onload=()=>{const o=window.pdfjsLib;if(!o){d(new Error("PDF.js loaded but pdfjsLib not available"));return}o.GlobalWorkerOptions.workerSrc="/pdfjs/pdf.worker.min.mjs",t(o)},a.onerror=()=>{d(new Error("Failed to load PDF.js from /pdfjs/pdf.min.mjs"))},document.head.appendChild(a)})}async function pt(t){return(await gt()).getDocument({url:t}).promise}async function mt(t,d=1){const a=t.getViewport({scale:d}),o=document.createElement("canvas"),s=o.getContext("2d");if(!s)throw new Error("Failed to get 2D context");return o.width=a.width,o.height=a.height,await t.render({canvasContext:s,viewport:a}).promise,{dataUrl:o.toDataURL("image/png"),width:a.width,height:a.height}}function V(t){if(!t)return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"};switch(t){case"highlighting":return{stroke:"rgb(250, 204, 21)",fill:"rgba(250, 204, 21, 0.3)"};case"linking":return{stroke:"rgb(59, 130, 246)",fill:"rgba(59, 130, 246, 0.2)"};case"assessing":return{stroke:"rgb(239, 68, 68)",fill:"rgba(239, 68, 68, 0.2)"};case"commenting":return{stroke:"rgb(255, 255, 255)",fill:"rgba(255, 255, 255, 0.2)"};default:return{stroke:"rgb(156, 163, 175)",fill:"rgba(156, 163, 175, 0.2)"}}}function yt({pdfUrl:t,existingAnnotations:d=[],drawingMode:a,selectedMotivation:o,session:s,hoveredAnnotationId:w,selectedAnnotationId:j,hoverDelayMs:S=150}){const[v,F]=l.useState(null),[D,E]=l.useState(0),[h,W]=l.useState(1),[N,K]=l.useState(null),[A,C]=l.useState(!0),[H,L]=l.useState(null),[f,Q]=l.useState(null),[p,U]=l.useState(null),[z]=l.useState(1.5),[M,b]=l.useState(!1),[r,y]=l.useState(null),Z=l.useRef(null),g=l.useRef(null);l.useEffect(()=>{let e=!1;async function n(){try{C(!0),L(null);const c=await pt(t);if(e)return;F(c),E(c.numPages),C(!1)}catch(c){if(e)return;console.error("Error loading PDF:",c),L("Failed to load PDF"),C(!1)}}return n(),()=>{e=!0}},[t]),l.useEffect(()=>{if(!v)return;let e=!1;const n=v;async function c(){try{const i=await n.getPage(h);if(e)return;const m=i.getViewport({scale:1});Q({width:m.width,height:m.height});const{dataUrl:x}=await mt(i,z);if(e)return;K(x)}catch(i){if(e)return;console.error("Error loading page:",i),L("Failed to load page")}}return c(),()=>{e=!0}},[v,h,z]),l.useEffect(()=>{const e=()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})};e();let n=null;try{n=new ResizeObserver(e),g.current&&n.observe(g.current)}catch{console.warn("ResizeObserver not supported, falling back to window resize listener"),window.addEventListener("resize",e)}return()=>{n?n.disconnect():window.removeEventListener("resize",e)}},[N]);const tt=l.useCallback(e=>{if(!a||!g.current)return;const n=g.current.getBoundingClientRect(),c=e.clientX-n.left,i=e.clientY-n.top;b(!0),y({startX:c,startY:i,endX:c,endY:i})},[a]),et=l.useCallback(e=>{if(!M||!r||!g.current)return;const n=g.current.getBoundingClientRect();y({...r,endX:e.clientX-n.left,endY:e.clientY-n.top})},[M,r]),nt=l.useCallback(()=>{if(!M||!r||!f||!p||!s){b(!1),y(null);return}if(Math.sqrt(Math.pow(r.endX-r.startX,2)+Math.pow(r.endY-r.startY,2))<10){if(d.length>0){const k=$.find(T=>{const Y=I(T.target);if(!Y)return!1;const _=J(Y.value);if(!_)return!1;const P=B(_,f.height,1),R=p.width/f.width,q=p.height/f.height,O=P.x*R,G=P.y*q,it=P.width*R,ct=P.height*q;return r.endX>=O&&r.endX<=O+it&&r.endY>=G&&r.endY<=G+ct});if(k){s==null||s.client.browse.click(k.id,k.motivation),b(!1),y(null);return}}b(!1),y(null);return}const c=f.width/p.width,i=f.height/p.height,m={startX:r.startX*c,startY:r.startY*i,endX:r.endX*c,endY:r.endY*i},x=ut(m,h,f.width,f.height,1),X=ht(x);o&&s.client.mark.request({type:"FragmentSelector",conformsTo:"http://tools.ietf.org/rfc/rfc3778",value:X},o),b(!1)},[M,r,h,f,p,o,d]),I=e=>{const n=lt(e);if(!n)return null;const i=(Array.isArray(n)?n:[n]).find(m=>m.type==="FragmentSelector");return!i||i.type!=="FragmentSelector"?null:i},$=d.filter(e=>{const n=I(e.target);return n?ft(n.value)===h:!1}),{handleMouseEnter:rt,handleMouseLeave:at}=l.useMemo(()=>dt(e=>s==null?void 0:s.client.beckon.hover(e),S),[s,S]),{stroke:ot,fill:st}=V(o??null);return H?u.jsx("div",{className:"semiont-pdf-annotation-canvas__error",children:H}):u.jsxs("div",{className:"semiont-pdf-annotation-canvas",children:[A&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__loading",children:"Loading PDF..."}),u.jsxs("div",{ref:Z,className:"semiont-pdf-annotation-canvas__container",style:{display:A?"none":void 0},onMouseDown:tt,onMouseMove:et,onMouseUp:nt,onMouseLeave:()=>{M&&(b(!1),y(null))},"data-drawing-mode":a||"none",children:[N&&u.jsx("img",{ref:g,src:N,alt:`PDF page ${h}`,className:"semiont-pdf-annotation-canvas__image",draggable:!1,style:{pointerEvents:"none"},onLoad:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.current&&U({width:g.current.clientWidth,height:g.current.clientHeight})})})}}),p&&f&&u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay-container",children:u.jsx("div",{className:"semiont-pdf-annotation-canvas__overlay",children:u.jsxs("svg",{className:"semiont-pdf-annotation-canvas__svg",width:p.width,height:p.height,children:[$.map(e=>{const n=I(e.target);if(!n)return null;const c=J(n.value);if(!c)return null;const i=B(c,f.height,1),m=p.width/f.width,x=p.height/f.height,X=e.id===w,k=e.id===j,T=e.motivation,{stroke:Y,fill:_}=V(T);return u.jsx("rect",{x:i.x*m,y:i.y*x,width:i.width*m,height:i.height*x,stroke:Y,strokeWidth:k?4:X?3:2,fill:_,style:{pointerEvents:"auto",cursor:"pointer",opacity:k?1:X?.9:.7},onClick:()=>s==null?void 0:s.client.browse.click(e.id,e.motivation),onMouseEnter:()=>rt(e.id),onMouseLeave:at},e.id)}),r&&(()=>{const e=Math.min(r.startX,r.endX),n=Math.min(r.startY,r.endY),c=Math.abs(r.endX-r.startX),i=Math.abs(r.endY-r.startY);return u.jsx("rect",{x:e,y:n,width:c,height:i,stroke:ot,strokeWidth:2,strokeDasharray:"5,5",fill:st,pointerEvents:"none"})})()]})})})]}),D>0&&u.jsxs("div",{className:"semiont-pdf-annotation-canvas__controls",children:[u.jsx("button",{disabled:h<=1,onClick:()=>W(h-1),className:"semiont-pdf-annotation-canvas__button",children:"Previous"}),u.jsxs("span",{className:"semiont-pdf-annotation-canvas__page-info",children:["Page ",h," of ",D]}),u.jsx("button",{disabled:h>=D,onClick:()=>W(h+1),className:"semiont-pdf-annotation-canvas__button",children:"Next"})]})]})}export{yt as PdfAnnotationCanvas};
2
+ //# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdfAnnotationCanvas.client-5QESNO5H-Cxm4Es_X.js","sources":["../../../../packages/react-ui/dist/PdfAnnotationCanvas.client-5QESNO5H.mjs"],"sourcesContent":["'use client';\n\"use client\";\nimport \"./chunk-D4GAAQMM.mjs\";\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { useRef, useState, useCallback, useEffect, useMemo } from \"react\";\nimport { getTargetSelector } from \"@semiont/core\";\nimport { createHoverHandlers } from \"@semiont/sdk\";\n\n// src/lib/pdf-coordinates.ts\nfunction canvasToPdfCoordinates(canvasRect, page, _pageWidth, pageHeight, scale = 1) {\n const x1 = Math.min(canvasRect.startX, canvasRect.endX);\n const y1 = Math.min(canvasRect.startY, canvasRect.endY);\n const x2 = Math.max(canvasRect.startX, canvasRect.endX);\n const y2 = Math.max(canvasRect.startY, canvasRect.endY);\n const pdfX = x1 / scale;\n const pdfWidth = (x2 - x1) / scale;\n const pdfY = pageHeight - y2 / scale;\n const pdfHeight = (y2 - y1) / scale;\n return {\n page,\n x: Math.round(pdfX),\n y: Math.round(pdfY),\n width: Math.round(pdfWidth),\n height: Math.round(pdfHeight)\n };\n}\nfunction pdfToCanvasCoordinates(pdfCoord, pageHeight, scale = 1) {\n const canvasX = pdfCoord.x * scale;\n const canvasWidth = pdfCoord.width * scale;\n const canvasY = (pageHeight - pdfCoord.y - pdfCoord.height) * scale;\n const canvasHeight = pdfCoord.height * scale;\n return {\n x: canvasX,\n y: canvasY,\n width: canvasWidth,\n height: canvasHeight\n };\n}\nfunction createFragmentSelector(coord) {\n return `page=${coord.page}&viewrect=${coord.x},${coord.y},${coord.width},${coord.height}`;\n}\nfunction parseFragmentSelector(fragment) {\n try {\n const pageMatch = fragment.match(/page=(\\d+)/);\n if (!pageMatch) return null;\n const page = parseInt(pageMatch[1], 10);\n const viewrectMatch = fragment.match(/viewrect=([\\d.]+),([\\d.]+),([\\d.]+),([\\d.]+)/);\n if (!viewrectMatch) return null;\n return {\n page,\n x: parseFloat(viewrectMatch[1]),\n y: parseFloat(viewrectMatch[2]),\n width: parseFloat(viewrectMatch[3]),\n height: parseFloat(viewrectMatch[4])\n };\n } catch {\n return null;\n }\n}\nfunction getPageFromFragment(fragment) {\n const match = fragment.match(/page=(\\d+)/);\n return match ? parseInt(match[1], 10) : null;\n}\n\n// src/lib/browser-pdfjs.ts\nasync function ensurePdfJs() {\n if (typeof window !== \"undefined\" && window.pdfjsLib) {\n return window.pdfjsLib;\n }\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = \"/pdfjs/pdf.min.mjs\";\n script.type = \"module\";\n script.onload = () => {\n const pdfjsLib = window.pdfjsLib;\n if (!pdfjsLib) {\n reject(new Error(\"PDF.js loaded but pdfjsLib not available\"));\n return;\n }\n pdfjsLib.GlobalWorkerOptions.workerSrc = \"/pdfjs/pdf.worker.min.mjs\";\n resolve(pdfjsLib);\n };\n script.onerror = () => {\n reject(new Error(\"Failed to load PDF.js from /pdfjs/pdf.min.mjs\"));\n };\n document.head.appendChild(script);\n });\n}\nasync function loadPdfDocument(url) {\n const pdfjsLib = await ensurePdfJs();\n const loadingTask = pdfjsLib.getDocument({ url });\n return loadingTask.promise;\n}\nasync function renderPdfPageToDataUrl(page, scale = 1) {\n const viewport = page.getViewport({ scale });\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Failed to get 2D context\");\n }\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n await renderTask.promise;\n return {\n dataUrl: canvas.toDataURL(\"image/png\"),\n width: viewport.width,\n height: viewport.height\n };\n}\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction getMotivationColor(motivation) {\n if (!motivation) {\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n switch (motivation) {\n case \"highlighting\":\n return { stroke: \"rgb(250, 204, 21)\", fill: \"rgba(250, 204, 21, 0.3)\" };\n case \"linking\":\n return { stroke: \"rgb(59, 130, 246)\", fill: \"rgba(59, 130, 246, 0.2)\" };\n case \"assessing\":\n return { stroke: \"rgb(239, 68, 68)\", fill: \"rgba(239, 68, 68, 0.2)\" };\n case \"commenting\":\n return { stroke: \"rgb(255, 255, 255)\", fill: \"rgba(255, 255, 255, 0.2)\" };\n default:\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n}\nfunction PdfAnnotationCanvas({\n pdfUrl,\n existingAnnotations = [],\n drawingMode,\n selectedMotivation,\n session,\n hoveredAnnotationId,\n selectedAnnotationId,\n hoverDelayMs = 150\n}) {\n const [pdfDoc, setPdfDoc] = useState(null);\n const [numPages, setNumPages] = useState(0);\n const [pageNumber, setPageNumber] = useState(1);\n const [pageImageUrl, setPageImageUrl] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pageDimensions, setPageDimensions] = useState(null);\n const [displayDimensions, setDisplayDimensions] = useState(null);\n const [scale] = useState(1.5);\n const [isDrawing, setIsDrawing] = useState(false);\n const [selection, setSelection] = useState(null);\n const containerRef = useRef(null);\n const imageRef = useRef(null);\n useEffect(() => {\n let cancelled = false;\n async function loadPdf() {\n try {\n setIsLoading(true);\n setError(null);\n const doc = await loadPdfDocument(pdfUrl);\n if (cancelled) return;\n setPdfDoc(doc);\n setNumPages(doc.numPages);\n setIsLoading(false);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading PDF:\", err);\n setError(\"Failed to load PDF\");\n setIsLoading(false);\n }\n }\n loadPdf();\n return () => {\n cancelled = true;\n };\n }, [pdfUrl]);\n useEffect(() => {\n if (!pdfDoc) return;\n let cancelled = false;\n const doc = pdfDoc;\n async function loadPage() {\n try {\n const page = await doc.getPage(pageNumber);\n if (cancelled) return;\n const viewport = page.getViewport({ scale: 1 });\n setPageDimensions({\n width: viewport.width,\n height: viewport.height\n });\n const { dataUrl } = await renderPdfPageToDataUrl(page, scale);\n if (cancelled) return;\n setPageImageUrl(dataUrl);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading page:\", err);\n setError(\"Failed to load page\");\n }\n }\n loadPage();\n return () => {\n cancelled = true;\n };\n }, [pdfDoc, pageNumber, scale]);\n useEffect(() => {\n const updateDisplayDimensions = () => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n };\n updateDisplayDimensions();\n let resizeObserver = null;\n try {\n resizeObserver = new ResizeObserver(updateDisplayDimensions);\n if (imageRef.current) {\n resizeObserver.observe(imageRef.current);\n }\n } catch (error2) {\n console.warn(\"ResizeObserver not supported, falling back to window resize listener\");\n window.addEventListener(\"resize\", updateDisplayDimensions);\n }\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else {\n window.removeEventListener(\"resize\", updateDisplayDimensions);\n }\n };\n }, [pageImageUrl]);\n const handleMouseDown = useCallback((e) => {\n if (!drawingMode) return;\n if (!imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setIsDrawing(true);\n setSelection({\n startX: x,\n startY: y,\n endX: x,\n endY: y\n });\n }, [drawingMode]);\n const handleMouseMove = useCallback((e) => {\n if (!isDrawing || !selection || !imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n setSelection({\n ...selection,\n endX: e.clientX - rect.left,\n endY: e.clientY - rect.top\n });\n }, [isDrawing, selection]);\n const handleMouseUp = useCallback(() => {\n if (!isDrawing || !selection || !pageDimensions || !displayDimensions || !session) {\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const dragDistance = Math.sqrt(\n Math.pow(selection.endX - selection.startX, 2) + Math.pow(selection.endY - selection.startY, 2)\n );\n const MIN_DRAG_DISTANCE = 10;\n if (dragDistance < MIN_DRAG_DISTANCE) {\n if (existingAnnotations.length > 0) {\n const clickedAnnotation = pageAnnotations.find((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const pdfCoord2 = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord2) return false;\n const rect = pdfToCanvasCoordinates(pdfCoord2, pageDimensions.height, 1);\n const scaleX2 = displayDimensions.width / pageDimensions.width;\n const scaleY2 = displayDimensions.height / pageDimensions.height;\n const displayX = rect.x * scaleX2;\n const displayY = rect.y * scaleY2;\n const displayWidth = rect.width * scaleX2;\n const displayHeight = rect.height * scaleY2;\n return selection.endX >= displayX && selection.endX <= displayX + displayWidth && selection.endY >= displayY && selection.endY <= displayY + displayHeight;\n });\n if (clickedAnnotation) {\n session?.client.browse.click(clickedAnnotation.id, clickedAnnotation.motivation);\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n }\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const scaleX = pageDimensions.width / displayDimensions.width;\n const scaleY = pageDimensions.height / displayDimensions.height;\n const nativeSelection = {\n startX: selection.startX * scaleX,\n startY: selection.startY * scaleY,\n endX: selection.endX * scaleX,\n endY: selection.endY * scaleY\n };\n const pdfCoord = canvasToPdfCoordinates(\n nativeSelection,\n pageNumber,\n pageDimensions.width,\n pageDimensions.height,\n 1\n // Use scale 1.0 since we already scaled to native coords\n );\n const fragmentSelector = createFragmentSelector(pdfCoord);\n if (selectedMotivation) {\n session.client.mark.request(\n {\n type: \"FragmentSelector\",\n conformsTo: \"http://tools.ietf.org/rfc/rfc3778\",\n value: fragmentSelector\n },\n selectedMotivation\n );\n }\n setIsDrawing(false);\n }, [isDrawing, selection, pageNumber, pageDimensions, displayDimensions, selectedMotivation, existingAnnotations]);\n const getFragmentSelector = (target) => {\n const selector = getTargetSelector(target);\n if (!selector) return null;\n const selectors = Array.isArray(selector) ? selector : [selector];\n const found = selectors.find((s) => s.type === \"FragmentSelector\");\n if (!found || found.type !== \"FragmentSelector\") return null;\n return found;\n };\n const pageAnnotations = existingAnnotations.filter((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const page = getPageFromFragment(fragmentSel.value);\n return page === pageNumber;\n });\n const { handleMouseEnter, handleMouseLeave } = useMemo(\n () => createHoverHandlers((id) => session?.client.beckon.hover(id), hoverDelayMs),\n [session, hoverDelayMs]\n );\n const { stroke, fill } = getMotivationColor(selectedMotivation ?? null);\n if (error) {\n return /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__error\", children: error });\n }\n return /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas\", children: [\n isLoading && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__loading\", children: \"Loading PDF...\" }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: containerRef,\n className: \"semiont-pdf-annotation-canvas__container\",\n style: { display: isLoading ? \"none\" : void 0 },\n onMouseDown: handleMouseDown,\n onMouseMove: handleMouseMove,\n onMouseUp: handleMouseUp,\n onMouseLeave: () => {\n if (isDrawing) {\n setIsDrawing(false);\n setSelection(null);\n }\n },\n \"data-drawing-mode\": drawingMode || \"none\",\n children: [\n pageImageUrl && /* @__PURE__ */ jsx(\n \"img\",\n {\n ref: imageRef,\n src: pageImageUrl,\n alt: `PDF page ${pageNumber}`,\n className: \"semiont-pdf-annotation-canvas__image\",\n draggable: false,\n style: { pointerEvents: \"none\" },\n onLoad: () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n });\n });\n }\n }\n ),\n displayDimensions && pageDimensions && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay-container\", children: /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay\", children: /* @__PURE__ */ jsxs(\n \"svg\",\n {\n className: \"semiont-pdf-annotation-canvas__svg\",\n width: displayDimensions.width,\n height: displayDimensions.height,\n children: [\n pageAnnotations.map((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return null;\n const pdfCoord = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord) return null;\n const rect = pdfToCanvasCoordinates(pdfCoord, pageDimensions.height, 1);\n const scaleX = displayDimensions.width / pageDimensions.width;\n const scaleY = displayDimensions.height / pageDimensions.height;\n const isHovered = ann.id === hoveredAnnotationId;\n const isSelected = ann.id === selectedAnnotationId;\n const annMotivation = ann.motivation;\n const { stroke: annStroke, fill: annFill } = getMotivationColor(annMotivation);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rect.x * scaleX,\n y: rect.y * scaleY,\n width: rect.width * scaleX,\n height: rect.height * scaleY,\n stroke: annStroke,\n strokeWidth: isSelected ? 4 : isHovered ? 3 : 2,\n fill: annFill,\n style: {\n pointerEvents: \"auto\",\n cursor: \"pointer\",\n opacity: isSelected ? 1 : isHovered ? 0.9 : 0.7\n },\n onClick: () => session?.client.browse.click(ann.id, ann.motivation),\n onMouseEnter: () => handleMouseEnter(ann.id),\n onMouseLeave: handleMouseLeave\n },\n ann.id\n );\n }),\n selection && (() => {\n const rectX = Math.min(selection.startX, selection.endX);\n const rectY = Math.min(selection.startY, selection.endY);\n const rectWidth = Math.abs(selection.endX - selection.startX);\n const rectHeight = Math.abs(selection.endY - selection.startY);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rectX,\n y: rectY,\n width: rectWidth,\n height: rectHeight,\n stroke,\n strokeWidth: 2,\n strokeDasharray: \"5,5\",\n fill,\n pointerEvents: \"none\"\n }\n );\n })()\n ]\n }\n ) }) })\n ]\n }\n ),\n numPages > 0 && /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas__controls\", children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber <= 1,\n onClick: () => setPageNumber(pageNumber - 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Previous\"\n }\n ),\n /* @__PURE__ */ jsxs(\"span\", { className: \"semiont-pdf-annotation-canvas__page-info\", children: [\n \"Page \",\n pageNumber,\n \" of \",\n numPages\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber >= numPages,\n onClick: () => setPageNumber(pageNumber + 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Next\"\n }\n )\n ] })\n ] });\n}\nexport {\n PdfAnnotationCanvas\n};\n//# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H.mjs.map"],"names":["canvasToPdfCoordinates","canvasRect","page","_pageWidth","pageHeight","scale","x1","y1","x2","y2","pdfX","pdfWidth","pdfY","pdfHeight","pdfToCanvasCoordinates","pdfCoord","canvasX","canvasWidth","canvasY","canvasHeight","createFragmentSelector","coord","parseFragmentSelector","fragment","pageMatch","viewrectMatch","getPageFromFragment","match","ensurePdfJs","resolve","reject","script","pdfjsLib","loadPdfDocument","url","renderPdfPageToDataUrl","viewport","canvas","context","getMotivationColor","motivation","PdfAnnotationCanvas","pdfUrl","existingAnnotations","drawingMode","selectedMotivation","session","hoveredAnnotationId","selectedAnnotationId","hoverDelayMs","pdfDoc","setPdfDoc","useState","numPages","setNumPages","pageNumber","setPageNumber","pageImageUrl","setPageImageUrl","isLoading","setIsLoading","error","setError","pageDimensions","setPageDimensions","displayDimensions","setDisplayDimensions","isDrawing","setIsDrawing","selection","setSelection","containerRef","useRef","imageRef","useEffect","cancelled","loadPdf","doc","err","loadPage","dataUrl","updateDisplayDimensions","resizeObserver","handleMouseDown","useCallback","rect","x","y","handleMouseMove","handleMouseUp","clickedAnnotation","pageAnnotations","ann","fragmentSel","getFragmentSelector","pdfCoord2","scaleX2","scaleY2","displayX","displayY","displayWidth","displayHeight","scaleX","scaleY","nativeSelection","fragmentSelector","target","selector","getTargetSelector","found","s","handleMouseEnter","handleMouseLeave","useMemo","createHoverHandlers","id","stroke","fill","jsx","jsxs","isHovered","isSelected","annMotivation","annStroke","annFill","rectX","rectY","rectWidth","rectHeight"],"mappings":"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"}
1
+ {"version":3,"file":"PdfAnnotationCanvas.client-5QESNO5H-C_S4hy6Q.js","sources":["../../../../packages/react-ui/dist/PdfAnnotationCanvas.client-5QESNO5H.mjs"],"sourcesContent":["'use client';\n\"use client\";\nimport \"./chunk-D4GAAQMM.mjs\";\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { useRef, useState, useCallback, useEffect, useMemo } from \"react\";\nimport { getTargetSelector } from \"@semiont/core\";\nimport { createHoverHandlers } from \"@semiont/sdk\";\n\n// src/lib/pdf-coordinates.ts\nfunction canvasToPdfCoordinates(canvasRect, page, _pageWidth, pageHeight, scale = 1) {\n const x1 = Math.min(canvasRect.startX, canvasRect.endX);\n const y1 = Math.min(canvasRect.startY, canvasRect.endY);\n const x2 = Math.max(canvasRect.startX, canvasRect.endX);\n const y2 = Math.max(canvasRect.startY, canvasRect.endY);\n const pdfX = x1 / scale;\n const pdfWidth = (x2 - x1) / scale;\n const pdfY = pageHeight - y2 / scale;\n const pdfHeight = (y2 - y1) / scale;\n return {\n page,\n x: Math.round(pdfX),\n y: Math.round(pdfY),\n width: Math.round(pdfWidth),\n height: Math.round(pdfHeight)\n };\n}\nfunction pdfToCanvasCoordinates(pdfCoord, pageHeight, scale = 1) {\n const canvasX = pdfCoord.x * scale;\n const canvasWidth = pdfCoord.width * scale;\n const canvasY = (pageHeight - pdfCoord.y - pdfCoord.height) * scale;\n const canvasHeight = pdfCoord.height * scale;\n return {\n x: canvasX,\n y: canvasY,\n width: canvasWidth,\n height: canvasHeight\n };\n}\nfunction createFragmentSelector(coord) {\n return `page=${coord.page}&viewrect=${coord.x},${coord.y},${coord.width},${coord.height}`;\n}\nfunction parseFragmentSelector(fragment) {\n try {\n const pageMatch = fragment.match(/page=(\\d+)/);\n if (!pageMatch) return null;\n const page = parseInt(pageMatch[1], 10);\n const viewrectMatch = fragment.match(/viewrect=([\\d.]+),([\\d.]+),([\\d.]+),([\\d.]+)/);\n if (!viewrectMatch) return null;\n return {\n page,\n x: parseFloat(viewrectMatch[1]),\n y: parseFloat(viewrectMatch[2]),\n width: parseFloat(viewrectMatch[3]),\n height: parseFloat(viewrectMatch[4])\n };\n } catch {\n return null;\n }\n}\nfunction getPageFromFragment(fragment) {\n const match = fragment.match(/page=(\\d+)/);\n return match ? parseInt(match[1], 10) : null;\n}\n\n// src/lib/browser-pdfjs.ts\nasync function ensurePdfJs() {\n if (typeof window !== \"undefined\" && window.pdfjsLib) {\n return window.pdfjsLib;\n }\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = \"/pdfjs/pdf.min.mjs\";\n script.type = \"module\";\n script.onload = () => {\n const pdfjsLib = window.pdfjsLib;\n if (!pdfjsLib) {\n reject(new Error(\"PDF.js loaded but pdfjsLib not available\"));\n return;\n }\n pdfjsLib.GlobalWorkerOptions.workerSrc = \"/pdfjs/pdf.worker.min.mjs\";\n resolve(pdfjsLib);\n };\n script.onerror = () => {\n reject(new Error(\"Failed to load PDF.js from /pdfjs/pdf.min.mjs\"));\n };\n document.head.appendChild(script);\n });\n}\nasync function loadPdfDocument(url) {\n const pdfjsLib = await ensurePdfJs();\n const loadingTask = pdfjsLib.getDocument({ url });\n return loadingTask.promise;\n}\nasync function renderPdfPageToDataUrl(page, scale = 1) {\n const viewport = page.getViewport({ scale });\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Failed to get 2D context\");\n }\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n const renderTask = page.render({\n canvasContext: context,\n viewport\n });\n await renderTask.promise;\n return {\n dataUrl: canvas.toDataURL(\"image/png\"),\n width: viewport.width,\n height: viewport.height\n };\n}\n\n// src/components/pdf-annotation/PdfAnnotationCanvas.tsx\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction getMotivationColor(motivation) {\n if (!motivation) {\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n switch (motivation) {\n case \"highlighting\":\n return { stroke: \"rgb(250, 204, 21)\", fill: \"rgba(250, 204, 21, 0.3)\" };\n case \"linking\":\n return { stroke: \"rgb(59, 130, 246)\", fill: \"rgba(59, 130, 246, 0.2)\" };\n case \"assessing\":\n return { stroke: \"rgb(239, 68, 68)\", fill: \"rgba(239, 68, 68, 0.2)\" };\n case \"commenting\":\n return { stroke: \"rgb(255, 255, 255)\", fill: \"rgba(255, 255, 255, 0.2)\" };\n default:\n return { stroke: \"rgb(156, 163, 175)\", fill: \"rgba(156, 163, 175, 0.2)\" };\n }\n}\nfunction PdfAnnotationCanvas({\n pdfUrl,\n existingAnnotations = [],\n drawingMode,\n selectedMotivation,\n session,\n hoveredAnnotationId,\n selectedAnnotationId,\n hoverDelayMs = 150\n}) {\n const [pdfDoc, setPdfDoc] = useState(null);\n const [numPages, setNumPages] = useState(0);\n const [pageNumber, setPageNumber] = useState(1);\n const [pageImageUrl, setPageImageUrl] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState(null);\n const [pageDimensions, setPageDimensions] = useState(null);\n const [displayDimensions, setDisplayDimensions] = useState(null);\n const [scale] = useState(1.5);\n const [isDrawing, setIsDrawing] = useState(false);\n const [selection, setSelection] = useState(null);\n const containerRef = useRef(null);\n const imageRef = useRef(null);\n useEffect(() => {\n let cancelled = false;\n async function loadPdf() {\n try {\n setIsLoading(true);\n setError(null);\n const doc = await loadPdfDocument(pdfUrl);\n if (cancelled) return;\n setPdfDoc(doc);\n setNumPages(doc.numPages);\n setIsLoading(false);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading PDF:\", err);\n setError(\"Failed to load PDF\");\n setIsLoading(false);\n }\n }\n loadPdf();\n return () => {\n cancelled = true;\n };\n }, [pdfUrl]);\n useEffect(() => {\n if (!pdfDoc) return;\n let cancelled = false;\n const doc = pdfDoc;\n async function loadPage() {\n try {\n const page = await doc.getPage(pageNumber);\n if (cancelled) return;\n const viewport = page.getViewport({ scale: 1 });\n setPageDimensions({\n width: viewport.width,\n height: viewport.height\n });\n const { dataUrl } = await renderPdfPageToDataUrl(page, scale);\n if (cancelled) return;\n setPageImageUrl(dataUrl);\n } catch (err) {\n if (cancelled) return;\n console.error(\"Error loading page:\", err);\n setError(\"Failed to load page\");\n }\n }\n loadPage();\n return () => {\n cancelled = true;\n };\n }, [pdfDoc, pageNumber, scale]);\n useEffect(() => {\n const updateDisplayDimensions = () => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n };\n updateDisplayDimensions();\n let resizeObserver = null;\n try {\n resizeObserver = new ResizeObserver(updateDisplayDimensions);\n if (imageRef.current) {\n resizeObserver.observe(imageRef.current);\n }\n } catch (error2) {\n console.warn(\"ResizeObserver not supported, falling back to window resize listener\");\n window.addEventListener(\"resize\", updateDisplayDimensions);\n }\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else {\n window.removeEventListener(\"resize\", updateDisplayDimensions);\n }\n };\n }, [pageImageUrl]);\n const handleMouseDown = useCallback((e) => {\n if (!drawingMode) return;\n if (!imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n setIsDrawing(true);\n setSelection({\n startX: x,\n startY: y,\n endX: x,\n endY: y\n });\n }, [drawingMode]);\n const handleMouseMove = useCallback((e) => {\n if (!isDrawing || !selection || !imageRef.current) return;\n const rect = imageRef.current.getBoundingClientRect();\n setSelection({\n ...selection,\n endX: e.clientX - rect.left,\n endY: e.clientY - rect.top\n });\n }, [isDrawing, selection]);\n const handleMouseUp = useCallback(() => {\n if (!isDrawing || !selection || !pageDimensions || !displayDimensions || !session) {\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const dragDistance = Math.sqrt(\n Math.pow(selection.endX - selection.startX, 2) + Math.pow(selection.endY - selection.startY, 2)\n );\n const MIN_DRAG_DISTANCE = 10;\n if (dragDistance < MIN_DRAG_DISTANCE) {\n if (existingAnnotations.length > 0) {\n const clickedAnnotation = pageAnnotations.find((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const pdfCoord2 = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord2) return false;\n const rect = pdfToCanvasCoordinates(pdfCoord2, pageDimensions.height, 1);\n const scaleX2 = displayDimensions.width / pageDimensions.width;\n const scaleY2 = displayDimensions.height / pageDimensions.height;\n const displayX = rect.x * scaleX2;\n const displayY = rect.y * scaleY2;\n const displayWidth = rect.width * scaleX2;\n const displayHeight = rect.height * scaleY2;\n return selection.endX >= displayX && selection.endX <= displayX + displayWidth && selection.endY >= displayY && selection.endY <= displayY + displayHeight;\n });\n if (clickedAnnotation) {\n session?.client.browse.click(clickedAnnotation.id, clickedAnnotation.motivation);\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n }\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n const scaleX = pageDimensions.width / displayDimensions.width;\n const scaleY = pageDimensions.height / displayDimensions.height;\n const nativeSelection = {\n startX: selection.startX * scaleX,\n startY: selection.startY * scaleY,\n endX: selection.endX * scaleX,\n endY: selection.endY * scaleY\n };\n const pdfCoord = canvasToPdfCoordinates(\n nativeSelection,\n pageNumber,\n pageDimensions.width,\n pageDimensions.height,\n 1\n // Use scale 1.0 since we already scaled to native coords\n );\n const fragmentSelector = createFragmentSelector(pdfCoord);\n if (selectedMotivation) {\n session.client.mark.request(\n {\n type: \"FragmentSelector\",\n conformsTo: \"http://tools.ietf.org/rfc/rfc3778\",\n value: fragmentSelector\n },\n selectedMotivation\n );\n }\n setIsDrawing(false);\n }, [isDrawing, selection, pageNumber, pageDimensions, displayDimensions, selectedMotivation, existingAnnotations]);\n const getFragmentSelector = (target) => {\n const selector = getTargetSelector(target);\n if (!selector) return null;\n const selectors = Array.isArray(selector) ? selector : [selector];\n const found = selectors.find((s) => s.type === \"FragmentSelector\");\n if (!found || found.type !== \"FragmentSelector\") return null;\n return found;\n };\n const pageAnnotations = existingAnnotations.filter((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const page = getPageFromFragment(fragmentSel.value);\n return page === pageNumber;\n });\n const { handleMouseEnter, handleMouseLeave } = useMemo(\n () => createHoverHandlers((id) => session?.client.beckon.hover(id), hoverDelayMs),\n [session, hoverDelayMs]\n );\n const { stroke, fill } = getMotivationColor(selectedMotivation ?? null);\n if (error) {\n return /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__error\", children: error });\n }\n return /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas\", children: [\n isLoading && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__loading\", children: \"Loading PDF...\" }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: containerRef,\n className: \"semiont-pdf-annotation-canvas__container\",\n style: { display: isLoading ? \"none\" : void 0 },\n onMouseDown: handleMouseDown,\n onMouseMove: handleMouseMove,\n onMouseUp: handleMouseUp,\n onMouseLeave: () => {\n if (isDrawing) {\n setIsDrawing(false);\n setSelection(null);\n }\n },\n \"data-drawing-mode\": drawingMode || \"none\",\n children: [\n pageImageUrl && /* @__PURE__ */ jsx(\n \"img\",\n {\n ref: imageRef,\n src: pageImageUrl,\n alt: `PDF page ${pageNumber}`,\n className: \"semiont-pdf-annotation-canvas__image\",\n draggable: false,\n style: { pointerEvents: \"none\" },\n onLoad: () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n });\n });\n }\n }\n ),\n displayDimensions && pageDimensions && /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay-container\", children: /* @__PURE__ */ jsx(\"div\", { className: \"semiont-pdf-annotation-canvas__overlay\", children: /* @__PURE__ */ jsxs(\n \"svg\",\n {\n className: \"semiont-pdf-annotation-canvas__svg\",\n width: displayDimensions.width,\n height: displayDimensions.height,\n children: [\n pageAnnotations.map((ann) => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return null;\n const pdfCoord = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord) return null;\n const rect = pdfToCanvasCoordinates(pdfCoord, pageDimensions.height, 1);\n const scaleX = displayDimensions.width / pageDimensions.width;\n const scaleY = displayDimensions.height / pageDimensions.height;\n const isHovered = ann.id === hoveredAnnotationId;\n const isSelected = ann.id === selectedAnnotationId;\n const annMotivation = ann.motivation;\n const { stroke: annStroke, fill: annFill } = getMotivationColor(annMotivation);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rect.x * scaleX,\n y: rect.y * scaleY,\n width: rect.width * scaleX,\n height: rect.height * scaleY,\n stroke: annStroke,\n strokeWidth: isSelected ? 4 : isHovered ? 3 : 2,\n fill: annFill,\n style: {\n pointerEvents: \"auto\",\n cursor: \"pointer\",\n opacity: isSelected ? 1 : isHovered ? 0.9 : 0.7\n },\n onClick: () => session?.client.browse.click(ann.id, ann.motivation),\n onMouseEnter: () => handleMouseEnter(ann.id),\n onMouseLeave: handleMouseLeave\n },\n ann.id\n );\n }),\n selection && (() => {\n const rectX = Math.min(selection.startX, selection.endX);\n const rectY = Math.min(selection.startY, selection.endY);\n const rectWidth = Math.abs(selection.endX - selection.startX);\n const rectHeight = Math.abs(selection.endY - selection.startY);\n return /* @__PURE__ */ jsx(\n \"rect\",\n {\n x: rectX,\n y: rectY,\n width: rectWidth,\n height: rectHeight,\n stroke,\n strokeWidth: 2,\n strokeDasharray: \"5,5\",\n fill,\n pointerEvents: \"none\"\n }\n );\n })()\n ]\n }\n ) }) })\n ]\n }\n ),\n numPages > 0 && /* @__PURE__ */ jsxs(\"div\", { className: \"semiont-pdf-annotation-canvas__controls\", children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber <= 1,\n onClick: () => setPageNumber(pageNumber - 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Previous\"\n }\n ),\n /* @__PURE__ */ jsxs(\"span\", { className: \"semiont-pdf-annotation-canvas__page-info\", children: [\n \"Page \",\n pageNumber,\n \" of \",\n numPages\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n disabled: pageNumber >= numPages,\n onClick: () => setPageNumber(pageNumber + 1),\n className: \"semiont-pdf-annotation-canvas__button\",\n children: \"Next\"\n }\n )\n ] })\n ] });\n}\nexport {\n PdfAnnotationCanvas\n};\n//# sourceMappingURL=PdfAnnotationCanvas.client-5QESNO5H.mjs.map"],"names":["canvasToPdfCoordinates","canvasRect","page","_pageWidth","pageHeight","scale","x1","y1","x2","y2","pdfX","pdfWidth","pdfY","pdfHeight","pdfToCanvasCoordinates","pdfCoord","canvasX","canvasWidth","canvasY","canvasHeight","createFragmentSelector","coord","parseFragmentSelector","fragment","pageMatch","viewrectMatch","getPageFromFragment","match","ensurePdfJs","resolve","reject","script","pdfjsLib","loadPdfDocument","url","renderPdfPageToDataUrl","viewport","canvas","context","getMotivationColor","motivation","PdfAnnotationCanvas","pdfUrl","existingAnnotations","drawingMode","selectedMotivation","session","hoveredAnnotationId","selectedAnnotationId","hoverDelayMs","pdfDoc","setPdfDoc","useState","numPages","setNumPages","pageNumber","setPageNumber","pageImageUrl","setPageImageUrl","isLoading","setIsLoading","error","setError","pageDimensions","setPageDimensions","displayDimensions","setDisplayDimensions","isDrawing","setIsDrawing","selection","setSelection","containerRef","useRef","imageRef","useEffect","cancelled","loadPdf","doc","err","loadPage","dataUrl","updateDisplayDimensions","resizeObserver","handleMouseDown","useCallback","rect","x","y","handleMouseMove","handleMouseUp","clickedAnnotation","pageAnnotations","ann","fragmentSel","getFragmentSelector","pdfCoord2","scaleX2","scaleY2","displayX","displayY","displayWidth","displayHeight","scaleX","scaleY","nativeSelection","fragmentSelector","target","selector","getTargetSelector","found","s","handleMouseEnter","handleMouseLeave","useMemo","createHoverHandlers","id","stroke","fill","jsx","jsxs","isHovered","isSelected","annMotivation","annStroke","annFill","rectX","rectY","rectWidth","rectHeight"],"mappings":"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"}