lightly-studio 0.4.6__py3-none-any.whl

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 (356) hide show
  1. lightly_studio/__init__.py +12 -0
  2. lightly_studio/api/__init__.py +0 -0
  3. lightly_studio/api/app.py +131 -0
  4. lightly_studio/api/cache.py +77 -0
  5. lightly_studio/api/db_tables.py +35 -0
  6. lightly_studio/api/features.py +5 -0
  7. lightly_studio/api/routes/api/annotation.py +305 -0
  8. lightly_studio/api/routes/api/annotation_label.py +87 -0
  9. lightly_studio/api/routes/api/annotations/__init__.py +7 -0
  10. lightly_studio/api/routes/api/annotations/create_annotation.py +52 -0
  11. lightly_studio/api/routes/api/caption.py +100 -0
  12. lightly_studio/api/routes/api/classifier.py +384 -0
  13. lightly_studio/api/routes/api/dataset.py +191 -0
  14. lightly_studio/api/routes/api/dataset_tag.py +266 -0
  15. lightly_studio/api/routes/api/embeddings2d.py +90 -0
  16. lightly_studio/api/routes/api/exceptions.py +114 -0
  17. lightly_studio/api/routes/api/export.py +114 -0
  18. lightly_studio/api/routes/api/features.py +17 -0
  19. lightly_studio/api/routes/api/frame.py +241 -0
  20. lightly_studio/api/routes/api/image.py +155 -0
  21. lightly_studio/api/routes/api/metadata.py +161 -0
  22. lightly_studio/api/routes/api/operator.py +75 -0
  23. lightly_studio/api/routes/api/sample.py +103 -0
  24. lightly_studio/api/routes/api/selection.py +87 -0
  25. lightly_studio/api/routes/api/settings.py +41 -0
  26. lightly_studio/api/routes/api/status.py +19 -0
  27. lightly_studio/api/routes/api/text_embedding.py +50 -0
  28. lightly_studio/api/routes/api/validators.py +17 -0
  29. lightly_studio/api/routes/api/video.py +133 -0
  30. lightly_studio/api/routes/healthz.py +13 -0
  31. lightly_studio/api/routes/images.py +104 -0
  32. lightly_studio/api/routes/video_frames_media.py +116 -0
  33. lightly_studio/api/routes/video_media.py +223 -0
  34. lightly_studio/api/routes/webapp.py +51 -0
  35. lightly_studio/api/server.py +94 -0
  36. lightly_studio/core/__init__.py +0 -0
  37. lightly_studio/core/add_samples.py +533 -0
  38. lightly_studio/core/add_videos.py +294 -0
  39. lightly_studio/core/dataset.py +780 -0
  40. lightly_studio/core/dataset_query/__init__.py +14 -0
  41. lightly_studio/core/dataset_query/boolean_expression.py +67 -0
  42. lightly_studio/core/dataset_query/dataset_query.py +317 -0
  43. lightly_studio/core/dataset_query/field.py +113 -0
  44. lightly_studio/core/dataset_query/field_expression.py +79 -0
  45. lightly_studio/core/dataset_query/match_expression.py +23 -0
  46. lightly_studio/core/dataset_query/order_by.py +79 -0
  47. lightly_studio/core/dataset_query/sample_field.py +37 -0
  48. lightly_studio/core/dataset_query/tags_expression.py +46 -0
  49. lightly_studio/core/image_sample.py +36 -0
  50. lightly_studio/core/loading_log.py +56 -0
  51. lightly_studio/core/sample.py +291 -0
  52. lightly_studio/core/start_gui.py +54 -0
  53. lightly_studio/core/video_sample.py +38 -0
  54. lightly_studio/dataset/__init__.py +0 -0
  55. lightly_studio/dataset/edge_embedding_generator.py +155 -0
  56. lightly_studio/dataset/embedding_generator.py +129 -0
  57. lightly_studio/dataset/embedding_manager.py +349 -0
  58. lightly_studio/dataset/env.py +20 -0
  59. lightly_studio/dataset/file_utils.py +49 -0
  60. lightly_studio/dataset/fsspec_lister.py +275 -0
  61. lightly_studio/dataset/mobileclip_embedding_generator.py +158 -0
  62. lightly_studio/dataset/perception_encoder_embedding_generator.py +260 -0
  63. lightly_studio/db_manager.py +166 -0
  64. lightly_studio/dist_lightly_studio_view_app/_app/env.js +1 -0
  65. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/0.GcXvs2l7.css +1 -0
  66. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/12.Dx6SXgAb.css +1 -0
  67. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/17.9X9_k6TP.css +1 -0
  68. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/18.BxiimdIO.css +1 -0
  69. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/2.CkOblLn7.css +1 -0
  70. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/ClassifierSamplesGrid.BJbCDlvs.css +1 -0
  71. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/LightlyLogo.BNjCIww-.png +0 -0
  72. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Bold.DGvYQtcs.ttf +0 -0
  73. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Italic-VariableFont_wdth_wght.B4AZ-wl6.ttf +0 -0
  74. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Medium.DVUZMR_6.ttf +0 -0
  75. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-Regular.DxJTClRG.ttf +0 -0
  76. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-SemiBold.D3TTYgdB.ttf +0 -0
  77. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/OpenSans-VariableFont_wdth_wght.BZBpG5Iz.ttf +0 -0
  78. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_layout.CefECEWA.css +1 -0
  79. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_layout.D5tDcjY-.css +1 -0
  80. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_page.9X9_k6TP.css +1 -0
  81. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_page.BxiimdIO.css +1 -0
  82. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/_page.Dx6SXgAb.css +1 -0
  83. lightly_studio/dist_lightly_studio_view_app/_app/immutable/assets/transform._-1mPSEI.css +1 -0
  84. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/0dDyq72A.js +20 -0
  85. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/69_IOA4Y.js +1 -0
  86. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BK4An2kI.js +1 -0
  87. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BRmB-kJ9.js +1 -0
  88. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/B_1cpokE.js +1 -0
  89. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BiqpDEr0.js +1 -0
  90. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BpLiSKgx.js +1 -0
  91. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/BscxbINH.js +39 -0
  92. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/C1FmrZbK.js +1 -0
  93. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/C80h3dJx.js +1 -0
  94. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/C8mfFM-u.js +2 -0
  95. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CGY1p9L4.js +517 -0
  96. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/COfLknXM.js +1 -0
  97. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CWj6FrbW.js +1 -0
  98. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CYgJF_JY.js +1 -0
  99. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CmLg0ys7.js +1 -0
  100. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/CvGjimpO.js +1 -0
  101. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D3RDXHoj.js +39 -0
  102. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D4y7iiT3.js +1 -0
  103. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D9SC3jBb.js +1 -0
  104. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DCuAdx1Q.js +20 -0
  105. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DDBy-_jD.js +1 -0
  106. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DIeogL5L.js +1 -0
  107. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DL9a7v5o.js +1 -0
  108. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DSKECuqX.js +39 -0
  109. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/D_FFv0Oe.js +1 -0
  110. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DiZ5o5vz.js +1 -0
  111. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DkbXUtyG.js +1 -0
  112. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DmK2hulV.js +1 -0
  113. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DqnHaLTj.js +1 -0
  114. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DtWZc_tl.js +1 -0
  115. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DuUalyFS.js +1 -0
  116. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/DwIonDAZ.js +1 -0
  117. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/Il-mSPmK.js +1 -0
  118. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/KNLP4aJU.js +1 -0
  119. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/KjYeVjkE.js +1 -0
  120. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/MErlcOXj.js +1 -0
  121. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/VRI4prUD.js +1 -0
  122. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/VYb2dkNs.js +1 -0
  123. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/VqWvU2yF.js +1 -0
  124. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/dHC3otuL.js +1 -0
  125. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/da7Oy_lO.js +1 -0
  126. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/eAy8rZzC.js +2 -0
  127. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/erjNR5MX.js +1 -0
  128. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/f1oG3eFE.js +1 -0
  129. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/rsLi1iKv.js +20 -0
  130. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/rwuuBP9f.js +1 -0
  131. lightly_studio/dist_lightly_studio_view_app/_app/immutable/chunks/xGHZQ1pe.js +3 -0
  132. lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/app.DrTRUgT3.js +2 -0
  133. lightly_studio/dist_lightly_studio_view_app/_app/immutable/entry/start.BK5EOJl2.js +1 -0
  134. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/0.CIvTuljF.js +4 -0
  135. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/1.UBvSzxdA.js +1 -0
  136. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/10.CQ_tiLJa.js +1 -0
  137. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/11.KqkAcaxW.js +1 -0
  138. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/12.DoYsmxQc.js +1 -0
  139. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/13.571n2LZA.js +1 -0
  140. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/14.DGs689M-.js +1 -0
  141. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/15.CWG1ehzT.js +1 -0
  142. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/16.Dpq6jbSh.js +1 -0
  143. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/17.B5AZbHUU.js +1 -0
  144. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/18.CBga8cnq.js +1 -0
  145. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/2.D2HXgz-8.js +1090 -0
  146. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/3.f4HAg-y3.js +1 -0
  147. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/4.BKF4xuKQ.js +1 -0
  148. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/5.BAE0Pm_f.js +39 -0
  149. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/6.CouWWpzA.js +1 -0
  150. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/7.UBHT0ktp.js +1 -0
  151. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/8.FiYNElcc.js +1 -0
  152. lightly_studio/dist_lightly_studio_view_app/_app/immutable/nodes/9.B3-UaT23.js +1 -0
  153. lightly_studio/dist_lightly_studio_view_app/_app/immutable/workers/clustering.worker-DKqeLtG0.js +2 -0
  154. lightly_studio/dist_lightly_studio_view_app/_app/immutable/workers/search.worker-vNSty3B0.js +1 -0
  155. lightly_studio/dist_lightly_studio_view_app/_app/version.json +1 -0
  156. lightly_studio/dist_lightly_studio_view_app/apple-touch-icon-precomposed.png +0 -0
  157. lightly_studio/dist_lightly_studio_view_app/apple-touch-icon.png +0 -0
  158. lightly_studio/dist_lightly_studio_view_app/favicon.png +0 -0
  159. lightly_studio/dist_lightly_studio_view_app/index.html +45 -0
  160. lightly_studio/errors.py +5 -0
  161. lightly_studio/examples/example.py +25 -0
  162. lightly_studio/examples/example_coco.py +27 -0
  163. lightly_studio/examples/example_coco_caption.py +29 -0
  164. lightly_studio/examples/example_metadata.py +369 -0
  165. lightly_studio/examples/example_operators.py +111 -0
  166. lightly_studio/examples/example_selection.py +28 -0
  167. lightly_studio/examples/example_split_work.py +48 -0
  168. lightly_studio/examples/example_video.py +22 -0
  169. lightly_studio/examples/example_video_annotations.py +157 -0
  170. lightly_studio/examples/example_yolo.py +22 -0
  171. lightly_studio/export/coco_captions.py +69 -0
  172. lightly_studio/export/export_dataset.py +104 -0
  173. lightly_studio/export/lightly_studio_label_input.py +120 -0
  174. lightly_studio/export_schema.py +18 -0
  175. lightly_studio/export_version.py +57 -0
  176. lightly_studio/few_shot_classifier/__init__.py +0 -0
  177. lightly_studio/few_shot_classifier/classifier.py +80 -0
  178. lightly_studio/few_shot_classifier/classifier_manager.py +644 -0
  179. lightly_studio/few_shot_classifier/random_forest_classifier.py +495 -0
  180. lightly_studio/metadata/complex_metadata.py +47 -0
  181. lightly_studio/metadata/compute_similarity.py +84 -0
  182. lightly_studio/metadata/compute_typicality.py +67 -0
  183. lightly_studio/metadata/gps_coordinate.py +41 -0
  184. lightly_studio/metadata/metadata_protocol.py +17 -0
  185. lightly_studio/models/__init__.py +1 -0
  186. lightly_studio/models/annotation/__init__.py +0 -0
  187. lightly_studio/models/annotation/annotation_base.py +303 -0
  188. lightly_studio/models/annotation/instance_segmentation.py +56 -0
  189. lightly_studio/models/annotation/links.py +17 -0
  190. lightly_studio/models/annotation/object_detection.py +47 -0
  191. lightly_studio/models/annotation/semantic_segmentation.py +44 -0
  192. lightly_studio/models/annotation_label.py +47 -0
  193. lightly_studio/models/caption.py +49 -0
  194. lightly_studio/models/classifier.py +20 -0
  195. lightly_studio/models/dataset.py +70 -0
  196. lightly_studio/models/embedding_model.py +30 -0
  197. lightly_studio/models/image.py +96 -0
  198. lightly_studio/models/metadata.py +208 -0
  199. lightly_studio/models/range.py +17 -0
  200. lightly_studio/models/sample.py +154 -0
  201. lightly_studio/models/sample_embedding.py +36 -0
  202. lightly_studio/models/settings.py +69 -0
  203. lightly_studio/models/tag.py +96 -0
  204. lightly_studio/models/two_dim_embedding.py +16 -0
  205. lightly_studio/models/video.py +161 -0
  206. lightly_studio/plugins/__init__.py +0 -0
  207. lightly_studio/plugins/base_operator.py +60 -0
  208. lightly_studio/plugins/operator_registry.py +47 -0
  209. lightly_studio/plugins/parameter.py +70 -0
  210. lightly_studio/py.typed +0 -0
  211. lightly_studio/resolvers/__init__.py +0 -0
  212. lightly_studio/resolvers/annotation_label_resolver/__init__.py +22 -0
  213. lightly_studio/resolvers/annotation_label_resolver/create.py +27 -0
  214. lightly_studio/resolvers/annotation_label_resolver/delete.py +28 -0
  215. lightly_studio/resolvers/annotation_label_resolver/get_all.py +37 -0
  216. lightly_studio/resolvers/annotation_label_resolver/get_by_id.py +24 -0
  217. lightly_studio/resolvers/annotation_label_resolver/get_by_ids.py +25 -0
  218. lightly_studio/resolvers/annotation_label_resolver/get_by_label_name.py +24 -0
  219. lightly_studio/resolvers/annotation_label_resolver/names_by_ids.py +25 -0
  220. lightly_studio/resolvers/annotation_label_resolver/update.py +38 -0
  221. lightly_studio/resolvers/annotation_resolver/__init__.py +40 -0
  222. lightly_studio/resolvers/annotation_resolver/count_annotations_by_dataset.py +129 -0
  223. lightly_studio/resolvers/annotation_resolver/create_many.py +124 -0
  224. lightly_studio/resolvers/annotation_resolver/delete_annotation.py +87 -0
  225. lightly_studio/resolvers/annotation_resolver/delete_annotations.py +60 -0
  226. lightly_studio/resolvers/annotation_resolver/get_all.py +85 -0
  227. lightly_studio/resolvers/annotation_resolver/get_all_with_payload.py +179 -0
  228. lightly_studio/resolvers/annotation_resolver/get_by_id.py +34 -0
  229. lightly_studio/resolvers/annotation_resolver/get_by_id_with_payload.py +130 -0
  230. lightly_studio/resolvers/annotation_resolver/update_annotation_label.py +142 -0
  231. lightly_studio/resolvers/annotation_resolver/update_bounding_box.py +68 -0
  232. lightly_studio/resolvers/annotations/__init__.py +1 -0
  233. lightly_studio/resolvers/annotations/annotations_filter.py +88 -0
  234. lightly_studio/resolvers/caption_resolver.py +129 -0
  235. lightly_studio/resolvers/dataset_resolver/__init__.py +55 -0
  236. lightly_studio/resolvers/dataset_resolver/check_dataset_type.py +29 -0
  237. lightly_studio/resolvers/dataset_resolver/create.py +20 -0
  238. lightly_studio/resolvers/dataset_resolver/delete.py +20 -0
  239. lightly_studio/resolvers/dataset_resolver/export.py +267 -0
  240. lightly_studio/resolvers/dataset_resolver/get_all.py +19 -0
  241. lightly_studio/resolvers/dataset_resolver/get_by_id.py +16 -0
  242. lightly_studio/resolvers/dataset_resolver/get_by_name.py +12 -0
  243. lightly_studio/resolvers/dataset_resolver/get_dataset_details.py +27 -0
  244. lightly_studio/resolvers/dataset_resolver/get_hierarchy.py +31 -0
  245. lightly_studio/resolvers/dataset_resolver/get_or_create_child_dataset.py +58 -0
  246. lightly_studio/resolvers/dataset_resolver/get_parent_dataset_by_sample_id.py +27 -0
  247. lightly_studio/resolvers/dataset_resolver/get_parent_dataset_id.py +22 -0
  248. lightly_studio/resolvers/dataset_resolver/get_root_dataset.py +61 -0
  249. lightly_studio/resolvers/dataset_resolver/get_root_datasets_overview.py +41 -0
  250. lightly_studio/resolvers/dataset_resolver/update.py +25 -0
  251. lightly_studio/resolvers/embedding_model_resolver.py +120 -0
  252. lightly_studio/resolvers/image_filter.py +50 -0
  253. lightly_studio/resolvers/image_resolver/__init__.py +21 -0
  254. lightly_studio/resolvers/image_resolver/create_many.py +52 -0
  255. lightly_studio/resolvers/image_resolver/delete.py +20 -0
  256. lightly_studio/resolvers/image_resolver/filter_new_paths.py +23 -0
  257. lightly_studio/resolvers/image_resolver/get_all_by_dataset_id.py +117 -0
  258. lightly_studio/resolvers/image_resolver/get_by_id.py +14 -0
  259. lightly_studio/resolvers/image_resolver/get_dimension_bounds.py +75 -0
  260. lightly_studio/resolvers/image_resolver/get_many_by_id.py +22 -0
  261. lightly_studio/resolvers/image_resolver/get_samples_excluding.py +43 -0
  262. lightly_studio/resolvers/metadata_resolver/__init__.py +15 -0
  263. lightly_studio/resolvers/metadata_resolver/metadata_filter.py +163 -0
  264. lightly_studio/resolvers/metadata_resolver/sample/__init__.py +21 -0
  265. lightly_studio/resolvers/metadata_resolver/sample/bulk_update_metadata.py +46 -0
  266. lightly_studio/resolvers/metadata_resolver/sample/get_by_sample_id.py +24 -0
  267. lightly_studio/resolvers/metadata_resolver/sample/get_metadata_info.py +104 -0
  268. lightly_studio/resolvers/metadata_resolver/sample/get_value_for_sample.py +27 -0
  269. lightly_studio/resolvers/metadata_resolver/sample/set_value_for_sample.py +53 -0
  270. lightly_studio/resolvers/sample_embedding_resolver.py +132 -0
  271. lightly_studio/resolvers/sample_resolver/__init__.py +17 -0
  272. lightly_studio/resolvers/sample_resolver/count_by_dataset_id.py +16 -0
  273. lightly_studio/resolvers/sample_resolver/create.py +16 -0
  274. lightly_studio/resolvers/sample_resolver/create_many.py +25 -0
  275. lightly_studio/resolvers/sample_resolver/get_by_id.py +14 -0
  276. lightly_studio/resolvers/sample_resolver/get_filtered_samples.py +56 -0
  277. lightly_studio/resolvers/sample_resolver/get_many_by_id.py +22 -0
  278. lightly_studio/resolvers/sample_resolver/sample_filter.py +74 -0
  279. lightly_studio/resolvers/settings_resolver.py +62 -0
  280. lightly_studio/resolvers/tag_resolver.py +299 -0
  281. lightly_studio/resolvers/twodim_embedding_resolver.py +119 -0
  282. lightly_studio/resolvers/video_frame_resolver/__init__.py +23 -0
  283. lightly_studio/resolvers/video_frame_resolver/count_video_frames_annotations.py +83 -0
  284. lightly_studio/resolvers/video_frame_resolver/create_many.py +57 -0
  285. lightly_studio/resolvers/video_frame_resolver/get_all_by_dataset_id.py +63 -0
  286. lightly_studio/resolvers/video_frame_resolver/get_by_id.py +13 -0
  287. lightly_studio/resolvers/video_frame_resolver/get_table_fields_bounds.py +44 -0
  288. lightly_studio/resolvers/video_frame_resolver/video_frame_annotations_counter_filter.py +47 -0
  289. lightly_studio/resolvers/video_frame_resolver/video_frame_filter.py +57 -0
  290. lightly_studio/resolvers/video_resolver/__init__.py +27 -0
  291. lightly_studio/resolvers/video_resolver/count_video_frame_annotations_by_video_dataset.py +86 -0
  292. lightly_studio/resolvers/video_resolver/create_many.py +58 -0
  293. lightly_studio/resolvers/video_resolver/filter_new_paths.py +33 -0
  294. lightly_studio/resolvers/video_resolver/get_all_by_dataset_id.py +181 -0
  295. lightly_studio/resolvers/video_resolver/get_by_id.py +22 -0
  296. lightly_studio/resolvers/video_resolver/get_table_fields_bounds.py +72 -0
  297. lightly_studio/resolvers/video_resolver/get_view_by_id.py +52 -0
  298. lightly_studio/resolvers/video_resolver/video_count_annotations_filter.py +50 -0
  299. lightly_studio/resolvers/video_resolver/video_filter.py +98 -0
  300. lightly_studio/selection/__init__.py +1 -0
  301. lightly_studio/selection/mundig.py +143 -0
  302. lightly_studio/selection/select.py +203 -0
  303. lightly_studio/selection/select_via_db.py +273 -0
  304. lightly_studio/selection/selection_config.py +49 -0
  305. lightly_studio/services/annotations_service/__init__.py +33 -0
  306. lightly_studio/services/annotations_service/create_annotation.py +64 -0
  307. lightly_studio/services/annotations_service/delete_annotation.py +22 -0
  308. lightly_studio/services/annotations_service/get_annotation_by_id.py +31 -0
  309. lightly_studio/services/annotations_service/update_annotation.py +54 -0
  310. lightly_studio/services/annotations_service/update_annotation_bounding_box.py +36 -0
  311. lightly_studio/services/annotations_service/update_annotation_label.py +48 -0
  312. lightly_studio/services/annotations_service/update_annotations.py +29 -0
  313. lightly_studio/setup_logging.py +59 -0
  314. lightly_studio/type_definitions.py +31 -0
  315. lightly_studio/utils/__init__.py +3 -0
  316. lightly_studio/utils/download.py +94 -0
  317. lightly_studio/vendor/__init__.py +1 -0
  318. lightly_studio/vendor/mobileclip/ACKNOWLEDGEMENTS +422 -0
  319. lightly_studio/vendor/mobileclip/LICENSE +31 -0
  320. lightly_studio/vendor/mobileclip/LICENSE_weights_data +50 -0
  321. lightly_studio/vendor/mobileclip/README.md +5 -0
  322. lightly_studio/vendor/mobileclip/__init__.py +96 -0
  323. lightly_studio/vendor/mobileclip/clip.py +77 -0
  324. lightly_studio/vendor/mobileclip/configs/mobileclip_b.json +18 -0
  325. lightly_studio/vendor/mobileclip/configs/mobileclip_s0.json +18 -0
  326. lightly_studio/vendor/mobileclip/configs/mobileclip_s1.json +18 -0
  327. lightly_studio/vendor/mobileclip/configs/mobileclip_s2.json +18 -0
  328. lightly_studio/vendor/mobileclip/image_encoder.py +67 -0
  329. lightly_studio/vendor/mobileclip/logger.py +154 -0
  330. lightly_studio/vendor/mobileclip/models/__init__.py +10 -0
  331. lightly_studio/vendor/mobileclip/models/mci.py +933 -0
  332. lightly_studio/vendor/mobileclip/models/vit.py +433 -0
  333. lightly_studio/vendor/mobileclip/modules/__init__.py +4 -0
  334. lightly_studio/vendor/mobileclip/modules/common/__init__.py +4 -0
  335. lightly_studio/vendor/mobileclip/modules/common/mobileone.py +341 -0
  336. lightly_studio/vendor/mobileclip/modules/common/transformer.py +451 -0
  337. lightly_studio/vendor/mobileclip/modules/image/__init__.py +4 -0
  338. lightly_studio/vendor/mobileclip/modules/image/image_projection.py +113 -0
  339. lightly_studio/vendor/mobileclip/modules/image/replknet.py +188 -0
  340. lightly_studio/vendor/mobileclip/modules/text/__init__.py +4 -0
  341. lightly_studio/vendor/mobileclip/modules/text/repmixer.py +281 -0
  342. lightly_studio/vendor/mobileclip/modules/text/tokenizer.py +38 -0
  343. lightly_studio/vendor/mobileclip/text_encoder.py +245 -0
  344. lightly_studio/vendor/perception_encoder/LICENSE.PE +201 -0
  345. lightly_studio/vendor/perception_encoder/README.md +11 -0
  346. lightly_studio/vendor/perception_encoder/vision_encoder/__init__.py +0 -0
  347. lightly_studio/vendor/perception_encoder/vision_encoder/bpe_simple_vocab_16e6.txt.gz +0 -0
  348. lightly_studio/vendor/perception_encoder/vision_encoder/config.py +205 -0
  349. lightly_studio/vendor/perception_encoder/vision_encoder/config_src.py +264 -0
  350. lightly_studio/vendor/perception_encoder/vision_encoder/pe.py +766 -0
  351. lightly_studio/vendor/perception_encoder/vision_encoder/rope.py +352 -0
  352. lightly_studio/vendor/perception_encoder/vision_encoder/tokenizer.py +347 -0
  353. lightly_studio/vendor/perception_encoder/vision_encoder/transforms.py +36 -0
  354. lightly_studio-0.4.6.dist-info/METADATA +88 -0
  355. lightly_studio-0.4.6.dist-info/RECORD +356 -0
  356. lightly_studio-0.4.6.dist-info/WHEEL +4 -0
@@ -0,0 +1 @@
1
+ import{x as It,i as me,p as _e,a as pe,c as z,s as A,g as e,b as s,r as M,n as kt,f as de,d as K,e as He,u as Dt,h as l,$ as Ue,t as Se}from"../chunks/DkbXUtyG.js";import{e as Pt}from"../chunks/BpLiSKgx.js";import{u as be}from"../chunks/KNLP4aJU.js";import{f as Et,e as Mt,m as Ct,u as Rt,c as Lt}from"../chunks/VYb2dkNs.js";import{u as Tt}from"../chunks/da7Oy_lO.js";import{y as Bt,D as Ye,b as Nt,E as jt,M as $t,B as zt,F as Ht,H as Ut,J as Ot,K as Xt,N as Vt,d as Yt,O as Kt,u as Qt,_ as qt,P as Zt,Q as Gt,R as Wt,C as Oe,n as Xe,T as Jt,o as ea,U as ta,x as aa}from"../chunks/CGY1p9L4.js";import"../chunks/CWj6FrbW.js";import{e as Ve}from"../chunks/D9SC3jBb.js";import{f as te,a as S,t as na,c as Ie,b as De}from"../chunks/CmLg0ys7.js";import{i as Q,s as q,a as Pe}from"../chunks/B_1cpokE.js";import{e as Ke,i as oa,u as Qe,k as sa,t as ve,s as $,a as ia}from"../chunks/C8mfFM-u.js";import{p as ke,b as ra}from"../chunks/DuUalyFS.js";import"../chunks/CvGjimpO.js";import{a as la}from"../chunks/DtWZc_tl.js";import"../chunks/D_FFv0Oe.js";import"../chunks/69_IOA4Y.js";import{p as qe}from"../chunks/C80h3dJx.js";import{a as da,g as Fe}from"../chunks/xGHZQ1pe.js";import{S as ca}from"../chunks/D4y7iiT3.js";import{r as he}from"../chunks/BRmB-kJ9.js";import{u as ua}from"../chunks/VRI4prUD.js";import{u as ma,a as ga,b as fa,c as va,d as ha}from"../chunks/DDBy-_jD.js";import{u as _a}from"../chunks/DmK2hulV.js";import{a as pa,Z as ba}from"../chunks/BscxbINH.js";import{S as xa}from"../chunks/erjNR5MX.js";import{D as ya}from"../chunks/BK4An2kI.js";import{F as wa}from"../chunks/rwuuBP9f.js";const Aa=({video_frame_dataset_id:m,sampleIndex:a,filter:b})=>{const d=It({isLoading:!1});return(async()=>{d.update(r=>({...r,isLoading:!0,error:void 0}));try{const{data:r}=await Pt({path:{video_frame_dataset_id:m},query:{cursor:a<1?0:a-1,limit:3},body:{filter:b},throwOnError:!0}),{setfilteredSampleCount:x}=be();x(r==null?void 0:r.total_count);let C;const F=a>0?r.data[0]:void 0;r.data.length>2&&(C=a==0?r.data[1]:r.data[2]),d.update(H=>({...H,isLoading:!1,sampleNext:C,samplePrevious:F,error:void 0}))}catch(r){d.update(x=>({...x,isLoading:!1,error:r.message||"Failed to load adjacent frames"}))}})(),d};function Sa({tagIds:m,metadata:a,annotationIds:b,bounds:d}){return{sample_filter:{tag_ids:m.size>0?[...m]:void 0,metadata_filters:a?Mt(a):void 0,annotation_label_ids:[...b]},...d}}const Fa=async({params:m,url:a})=>{const b=m.dataset_id,d=a.searchParams.get("index"),_=d!==null?parseInt(d):null;let r=null;if(_!==null){const{selectedAnnotationFilterIds:x}=be(),{videoFramesBoundsValues:C}=Bt(),{metadataValues:F}=Et(),{tagsSelected:H}=Tt({dataset_id:b,kind:["sample"]}),k=me(H),R=me(F),g=me(x),L=me(C),U=Sa({tagIds:k,metadata:R,annotationIds:g,bounds:L});r=Aa({video_frame_dataset_id:b,sampleIndex:_,filter:U})}return{frameAdjacents:r,frameIndex:_,dataset_id:m.dataset_id,sampleId:m.sample_id}},vn=Object.freeze(Object.defineProperty({__proto__:null,load:Fa},Symbol.toStringTag,{value:"Module"}));function Ia(m,a){_e(a,!0),ya(m,{get rootDataset(){return a.rootDataset},get index(){return a.frameIndex},section:"Frames",subsection:"Frame",get navigateTo(){return he.toFrames}}),pe()}var ka=te('<label class="flex w-full flex-col gap-3 text-muted-foreground"><div class="text-sm">Select or create a label for a new annotation.</div> <!></label>'),Da=te('<div class="items-left mb-2 flex flex-col justify-between space-y-2 bg-muted p-2"><div class="mb-2 w-full"><!></div> <!></div>'),Pa=te('<div class="flex flex-col gap-3 space-y-4"><!> <div class="flex flex-col gap-2"></div> <div class="flex flex-col gap-2"><!></div></div>');function Ea(m,a){_e(a,!0);const b=()=>q(H,"$annotationLabels",_),d=()=>q(F,"$isEditingMode",_),[_,r]=Pe();let x=ke(a,"addAnnotationEnabled",15,!1),C=ke(a,"addAnnotationLabel",15,void 0);const{isEditingMode:F}=qe.data.globalStorage,H=Ye(),k=s(()=>Ot(b().data||[])),R=s(()=>a.sample.sample.annotations?[...a.sample.sample.annotations].sort((g,L)=>g.annotation_label.annotation_label_name.localeCompare(L.annotation_label.annotation_label_name)):[]);Nt(m,{title:"Annotations",children:(g,L)=>{var U=Pa(),D=z(U);{var se=T=>{var I=Da(),Z=z(I),B=z(Z);{let y=s(()=>x()?"default":"outline");zt(B,{title:"Add annotation",get variant(){return e(y)},"data-testid":"create-rectangle",class:"w-full",onclick:()=>{x(!x())},children:(P,N)=>{kt();var W=na("Add annotation");S(P,W)},$$slots:{default:!0}})}M(Z);var c=A(Z,2);{var X=y=>{var P=ka(),N=A(z(P),2);{const W=(ne,E)=>{let xe=()=>E==null?void 0:E().inputValue;Ut(ne,{get label(){return xe()}})};let ie=s(()=>e(k).find(ne=>{var E;return ne.value===((E=C())==null?void 0:E.value)}));Ht(N,{get items(){return e(k)},get selectedItem(){return e(ie)},name:"annotation-label",label:"Choose or create a label",className:"w-full",contentClassName:"w-full",placeholder:"Select or create a label",onSelect:ne=>{C(ne)},notFound:W,$$slots:{notFound:!0}})}M(P),S(y,P)};Q(c,y=>{x()&&y(X)})}M(I),S(T,I)};Q(D,T=>{d()&&T(se)})}var o=A(D,2);Ke(o,21,()=>e(R),oa,(T,I)=>{{let Z=s(()=>a.selectedAnnotationId===e(I).sample_id),B=s(()=>a.annotationsIdsToHide.has(e(I).sample_id));jt(T,{get annotation(){return e(I)},get isSelected(){return e(Z)},onClick:()=>a.onAnnotationClick(e(I).sample_id),onDeleteAnnotation:()=>a.onDeleteAnnotation(e(I).sample_id),get isHidden(){return e(B)},onToggleShowAnnotation:c=>{c.stopPropagation(),a.onToggleShowAnnotation(e(I).sample_id)},get onUpdate(){return a.onUpdate}})}}),M(o);var O=A(o,2),ae=z(O);$t(ae,{get metadata_dict(){return a.sample.sample.metadata_dict}}),M(O),M(U),S(g,U)}}),pe(),r()}const Ma=m=>{const a=Ct({path:{sample_id:m}}),b=Rt(),d=Lt(a);return{refetch:()=>{b.invalidateQueries({queryKey:a.queryKey})},videoFrame:d}};function Ca(m,a){_e(a,!0);const b=()=>q(e(k),"$annotationResp",_),d=()=>q(F,"$showAnnotationTextLabelsStore",_),[_,r]=Pe(),x=ke(a,"isResizable",3,!1),{addReversibleAction:C}=be(),{showAnnotationTextLabelsStore:F}=Qe(),H=s(()=>Kt({datasetId:a.datasetId,annotationId:a.annotationId})),k=s(()=>e(H).annotation),R=s(()=>e(H).updateAnnotation);let g=s(()=>b().data),L=s(()=>e(g)?Xt(e(g)):void 0);const U=O=>{(async()=>{try{await e(R)({annotation_id:a.annotationId,dataset_id:a.datasetId,bounding_box:O}),e(g)&&pa({annotation:e(g),dataset_id:a.datasetId,addReversibleAction:C,updateAnnotation:e(R)})}catch(T){console.error("Failed to update annotation:",T.message)}})()};var D=Ie(),se=de(D);{var o=O=>{var ae=Ie(),T=de(ae);sa(T,()=>e(L),I=>{Vt(I,{get groupId(){return e(g).sample_id},get onSelect(){return a.toggleAnnotationSelection},get box(){return e(L)},get isSelected(){return a.isSelected},children:(Z,B)=>{{let c=s(()=>({x:0,y:0,width:a.sample.video.width,height:a.sample.video.height}));Yt(Z,{get annotation(){return e(g)},get showLabel(){return d()},get imageWidth(){return a.sample.video.width},get constraintBox(){return e(c)},get isResizable(){return x()},onBoundingBoxChanged:U})}},$$slots:{default:!0}})}),S(O,ae)};Q(se,O=>{e(g)&&e(L)&&O(o)})}S(m,D),pe(),r()}var Ra=De('<line x1="0" stroke-width="1" vector-effect="non-scaling-stroke" stroke-dasharray="5,5" opacity="0.6"></line><line y1="0" vector-effect="non-scaling-stroke" stroke-width="1" stroke-dasharray="5,5" opacity="0.6"></line>',1),La=De('<rect class="select-none" fill="transparent" role="button" style="outline: 0;cursor: crosshair;" tabindex="0"></rect>'),Ta=De('<image width="100%" height="100%"></image><g><!><!><!></g><!>',1),Ba=te('<div class="relative h-full w-full overflow-hidden"><!> <!></div>'),Na=te("<!> <!> <!>",1),ja=te('<div class="flex min-h-0 flex-1 gap-4"><!> <!></div>'),$a=te('<div class="flex h-screen items-center justify-center"><!></div>'),za=te('<div class="flex h-full w-full flex-col space-y-4"><div class="flex w-full items-center"><!></div> <!> <!></div>');function hn(m,a){_e(a,!0);const b=()=>q(e(se),"$videoFrame",F),d=()=>q(ne,"$isEditingMode",F),_=()=>q(e(R),"$frameAdjacents",F),r=()=>q(Je,"$labels",F),x=()=>q(Ge,"$rootDataset",F),C=()=>q(at,"$isHidden",F),[F,H]=Pe(),k=s(()=>a.data.frameIndex),R=s(()=>a.data.frameAdjacents),g=s(()=>a.data.datasetId),L=s(()=>a.data.sampleId),U=s(()=>Ma(e(L))),D=s(()=>e(U).refetch),se=s(()=>e(U).videoFrame),o=s(()=>b().data),O=s(()=>_a({datasetId:e(g)})),ae=s(()=>e(O).removeTagFromSample),T=s(()=>{var t,n,f;return((f=(n=(t=e(o))==null?void 0:t.sample)==null?void 0:n.tags)==null?void 0:f.map(u=>({tagId:u.tag_id,name:u.name})))??[]}),I=async t=>{var n;if((n=e(o))!=null&&n.sample_id)try{await e(ae)(e(o).sample_id,t),e(D)()}catch(f){console.error("Error removing tag from frame:",f)}};let Z,B=K(!1),c=K(null),X=K(null),y=K(null),P=K(!1),N=K(void 0),W=K(He([])),ie=K(He(new Set));const{isEditingMode:ne}=qe.data.globalStorage;let E=K(!1);const xe=s(()=>d()&&!e(E));let J=K(void 0);const{createAnnotation:Ee}=ma({datasetId:a.data.dataset.dataset_id}),{settingsStore:Ze}=Qe(),{rootDataset:Ge,refetch:We}=ua({datasetId:a.data.dataset.dataset_id}),Je=Ye(),{createLabel:et}=ga(),tt=s(()=>e(W).filter(t=>!e(ie).has(t.sample_id))),{isHidden:at,handleKeyEvent:Me}=Qt(),{deleteAnnotation:Ce}=fa({datasetId:a.data.dataset.dataset_id}),{addReversibleAction:Re,clearReversibleActions:nt}=be();da(()=>{nt()});const ye=s(()=>e(N)?ta(e(N).label,1).color:"blue"),Le=s(()=>e(P)&&!e(E)&&e(N)!==void 0),ot=t=>{if(!e(X)||e(B)||!e(o))return;const n=e(X).getBoundingClientRect(),f=t.clientX,u=t.clientY,i=(f-n.left)/n.width*e(o).video.width,w=(u-n.top)/n.height*e(o).video.height;l(y,{x:i,y:w},!0),t.stopPropagation(),t.preventDefault()},st=qt.throttle(ot,50),Te=10;function it(){var n;if(e(k)==null||!e(o)||!e(R))return null;const t=(n=_())==null?void 0:n.sampleNext;if(!t)return null;Fe(he.toFramesDetails(e(o).sample.dataset_id,t.sample_id,e(k)+1))}function rt(){var n;if(e(k)==null||!e(o)||!e(R))return null;const t=(n=_())==null?void 0:n.samplePrevious;if(!t)return null;Fe(he.toFramesDetails(e(o).sample.dataset_id,t.sample_id,e(k)-1))}const lt=()=>{l(B,!1),l(c,null),l(y,null)};Dt(()=>{dt(),e(se).subscribe(t=>{if(t.isSuccess&&t.data){let n=Zt(t.data.sample.annotations);l(W,n,!0)}else l(W,[],!0)})});const dt=()=>{if(!e(X))return;const t=Gt(e(X));let n=null;const f=Wt().on("start",u=>{if(!e(P)||!e(o))return;l(B,!0);const i=e(X).getBoundingClientRect(),w=u.sourceEvent.clientX,v=u.sourceEvent.clientY,j=(w-i.left)/i.width*e(o).video.width,p=(v-i.top)/i.height*e(o).video.height;n={x:j,y:p},l(c,{x:j,y:p,width:0,height:0},!0),l(y,{x:j,y:p},!0)}).on("drag",u=>{if(!e(c)||!e(B)||!n||!e(o))return;const i=e(X).getBoundingClientRect(),w=u.sourceEvent.clientX,v=u.sourceEvent.clientY;let j=(w-i.left)/i.width*e(o).video.width,p=(v-i.top)/i.height*e(o).video.height;const oe=e(o).video.width,re=e(o).video.height;j=Math.max(0,Math.min(j,oe)),p=Math.max(0,Math.min(p,re));const ce=Math.min(n.x,j),V=Math.min(n.y,p),ue=Math.abs(j-n.x),le=Math.abs(p-n.y);l(c,{x:ce,y:V,width:ue,height:le},!0),l(y,{x:j,y:p},!0)}).on("end",()=>{!e(c)||!e(B)||(e(c).width>Te&&e(c).height>Te&&e(N)&&mt({x:e(c).x,y:e(c).y,width:e(c).width,height:e(c).height,labelName:e(N).label}),lt(),n=null)});return t.call(f),t.on("mousemove",st),()=>{f.on("start",null).on("drag",null).on("end",null)}},Be=t=>{e(E)||(e(J)===t?l(J,void 0):l(J,t,!0))},ct=t=>{const n=new Set(e(ie));n.has(t)?n.delete(t):n.add(t),l(ie,n,!0)},ut=async t=>{var u;if(!e(o)||!r().data)return;const n=(u=e(o).sample.annotations)==null?void 0:u.find(i=>i.sample_id===t);if(!n)return;(async()=>{try{ha({annotation:n,labels:r().data,addReversibleAction:Re,createAnnotation:Ee,refetch:e(D)}),await Ce(t),ve.success("Annotation deleted successfully"),e(D)(),e(J)===t&&l(J,void 0)}catch(i){ve.error("Failed to delete annotation. Please try again."),console.error("Error deleting annotation:",i)}})()},mt=async({x:t,y:n,width:f,height:u,labelName:i})=>{if(!r().data)return;let w=r().data.find(v=>v.annotation_label_name===i);w||(w=await et({annotation_label_name:i}));try{const v=await Ee({parent_sample_id:e(L),annotation_type:"object_detection",x:Math.round(t),y:Math.round(n),width:Math.round(f),height:Math.round(u),annotation_label_id:w.annotation_label_id});return e(W).length==0&&We(),va({annotation:v,addReversibleAction:Re,deleteAnnotation:Ce,refetch:e(D)}),e(D)(),l(J,v.sample_id,!0),ve.success("Annotation created successfully"),v}catch(v){ve.error("Failed to create annotation. Please try again."),console.error("Error creating annotation:",v);return}},gt=()=>{Fe(he.toFrames(e(g)))},ft=t=>{switch(t.key){case me(Ze).key_go_back:d()?e(P)&&l(P,!1):gt();break;case" ":t.preventDefault(),t.stopPropagation(),console.log("space pressed in sample details"),l(E,d(),!0);break}Me(t)},vt=t=>{t.key===" "&&l(E,!1),Me(t)};var we=za();Ve("keydown",Ue,ft),Ve("keyup",Ue,vt);var Ae=z(we),ht=z(Ae);{var _t=t=>{Ia(t,{get rootDataset(){return x().data},get frameIndex(){return e(k)}})};Q(ht,t=>{x().data&&t(_t)})}M(Ae);var Ne=A(Ae,2);ca(Ne,{class:"mb-4 bg-border-hard"});var pt=A(Ne,2);{var bt=t=>{var n=ja(),f=z(n);Oe(f,{className:"flex flex-col w-[60vw]",children:(i,w)=>{Xe(i,{className:"flex flex-col gap-4 overflow-hidden h-full",children:(v,j)=>{var p=Ba(),oe=z(p);{var re=V=>{{let ue=s(()=>{var ee;return!!((ee=_())!=null&&ee.samplePrevious)}),le=s(()=>{var ee;return!!((ee=_())!=null&&ee.sampleNext)});xa(V,{get hasPrevious(){return e(ue)},get hasNext(){return e(le)},onPrevious:rt,onNext:it})}};Q(oe,V=>{e(R)&&V(re)})}var ce=A(oe,2);ba(ce,{boundingBox:Z,get width(){return e(o).video.width},get height(){return e(o).video.height},zoomableContent:ue=>{var le=Ta(),ee=de(le),ge=A(ee);let je;var $e=z(ge);Ke($e,17,()=>e(tt),h=>h.sample_id,(h,Y)=>{{let G=s(()=>e(J)===e(Y).sample_id);Ca(h,{get annotationId(){return e(Y).sample_id},get sample(){return e(o)},get datasetId(){return e(g)},get isResizable(){return e(xe)},get isSelected(){return e(G)},toggleAnnotationSelection:Be})}});var ze=A($e);{var yt=h=>{Jt(h,{get bbox(){return e(c)},get colorStroke(){return e(ye)},colorFill:"rgba(0, 123, 255, 0.1)",style:"outline: 0;",opacity:.8,scale:1})};Q(ze,h=>{e(c)&&e(B)&&e(N)&&h(yt)})}var wt=A(ze);{var At=h=>{var Y=Ra(),G=de(Y),fe=A(G);Se(()=>{$(G,"y1",e(y).y),$(G,"x2",e(o).video.width),$(G,"y2",e(y).y),$(G,"stroke",e(ye)),$(fe,"x1",e(y).x),$(fe,"x2",e(y).x),$(fe,"y2",e(o).video.height),$(fe,"stroke",e(ye))}),S(h,Y)};Q(wt,h=>{e(y)&&e(Le)&&h(At)})}M(ge);var St=A(ge);{var Ft=h=>{var Y=La();ra(Y,G=>l(X,G),()=>e(X)),Se(()=>{$(Y,"width",e(o).video.width),$(Y,"height",e(o).video.height)}),S(h,Y)};Q(St,h=>{e(Le)&&h(Ft)})}Se(h=>{$(ee,"href",`${la}/${e(o).sample_id}`),je=ia(ge,0,"",null,je,h)},[()=>({invisible:C()})]),S(ue,le)},$$slots:{zoomableContent:!0}}),M(p),S(v,p)},$$slots:{default:!0}})},$$slots:{default:!0}});var u=A(f,2);Oe(u,{className:"flex flex-col flex-1 overflow-hidden",children:(i,w)=>{Xe(i,{className:"h-full overflow-y-auto",children:(v,j)=>{var p=Na(),oe=de(p);ea(oe,{get tags(){return e(T)},onClick:I});var re=A(oe,2);wa(re,{get sample(){return e(o)}});var ce=A(re,2);Ea(ce,{get annotationsIdsToHide(){return e(ie)},get selectedAnnotationId(){return e(J)},onAnnotationClick:Be,onToggleShowAnnotation:ct,onDeleteAnnotation:ut,get onUpdate(){return e(D)},get sample(){return e(o)},get addAnnotationEnabled(){return e(P)},set addAnnotationEnabled(V){l(P,V,!0)},get addAnnotationLabel(){return e(N)},set addAnnotationLabel(V){l(N,V,!0)}}),S(v,p)},$$slots:{default:!0}})},$$slots:{default:!0}}),M(n),S(t,n)},xt=t=>{var n=Ie(),f=de(n);{var u=i=>{var w=$a(),v=z(w);aa(v,{}),M(w),S(i,w)};Q(f,i=>{b().isLoading&&i(u)},!0)}S(t,n)};Q(pt,t=>{e(o)?t(bt):t(xt,!1)})}M(we),S(m,we),pe(),H()}export{hn as component,vn as universal};
@@ -0,0 +1 @@
1
+ import"../chunks/CWj6FrbW.js";import{p as S,u as $,g as r,a as _,b as o}from"../chunks/DkbXUtyG.js";import{s as i,a as h}from"../chunks/B_1cpokE.js";import{a as T}from"../chunks/CGY1p9L4.js";import"../chunks/CvGjimpO.js";import{u as b}from"../chunks/KNLP4aJU.js";import"../chunks/C8mfFM-u.js";import"../chunks/D_FFv0Oe.js";import"../chunks/69_IOA4Y.js";import"../chunks/C80h3dJx.js";import"../chunks/xGHZQ1pe.js";import{u as G}from"../chunks/da7Oy_lO.js";import"../chunks/DtWZc_tl.js";function q(p,t){S(t,!0);const m=()=>i(u,"$lastGridType",s),e=()=>i(n,"$sampleSize",s),[s,d]=h(),{datasetId:a,sampleSize:n,selectedAnnotationFilterIds:l,globalStorage:{textEmbedding:g}}=t.data,{lastGridType:u}=b(),c=o(()=>G({dataset_id:a})),f=o(()=>r(c).clearTagsSelected);$(()=>{m()!=="samples"&&r(f)()}),T(p,{get sampleHeight(){return e().height},get sampleWidth(){return e().width},get textEmbedding(){return g},get dataset_id(){return a},get selectedAnnotationFilterIds(){return l}}),_(),d()}export{q as component};
@@ -0,0 +1 @@
1
+ import"../chunks/CWj6FrbW.js";import"../chunks/69_IOA4Y.js";function t(o){}export{t as component};
@@ -0,0 +1 @@
1
+ import{x as S,i as r,p as $,f as j,a as y,$ as N,g as h,b as v}from"../chunks/DkbXUtyG.js";import{c as P}from"../chunks/BpLiSKgx.js";import{e as L}from"../chunks/VYb2dkNs.js";import{u as A}from"../chunks/KNLP4aJU.js";import"../chunks/CWj6FrbW.js";import"../chunks/69_IOA4Y.js";import{e as k}from"../chunks/D9SC3jBb.js";import{c as E,a as D}from"../chunks/CmLg0ys7.js";import{i as O,a as T,s as F}from"../chunks/B_1cpokE.js";import{p as x}from"../chunks/C80h3dJx.js";import{g as b}from"../chunks/xGHZQ1pe.js";import{r as w}from"../chunks/BRmB-kJ9.js";import{S as M}from"../chunks/erjNR5MX.js";const z=({dataset_id:n,sampleIndex:s,tagIds:a,annotationLabelIds:u,min_width:f,max_width:d,min_height:o,max_height:p,textEmbedding:m,metadataValues:c})=>{const i=S({isLoading:!1});return(async()=>{i.update(e=>({...e,isLoading:!0,error:void 0}));try{const{data:e}=await P({path:{dataset_id:n},body:{pagination:{offset:s<1?0:s-1,limit:3},filters:{sample_filter:{annotation_label_ids:u,tag_ids:a,metadata_filters:c?L(c):void 0},width:{min:f,max:d},height:{min:o,max:p}},text_embedding:m},throwOnError:!0}),{setfilteredSampleCount:t}=A();t(e==null?void 0:e.total_count);let l;const g=s>0?e.data[0]:void 0;e.data.length>2&&(l=s==0?e.data[1]:e.data[2]),i.update(I=>({...I,isLoading:!1,sampleNext:l,samplePrevious:g,error:void 0}))}catch(e){i.update(t=>({...t,isLoading:!1,error:e.message||"Failed to load adjacent samples"}))}})(),i},C=async({parent:n,params:{dataset_id:s,sampleId:a,sampleIndex:u}})=>{var _,e,t,l,g;const{samplesSelectedTagsIds:f,samplesSelectedAnnotationLabelsIds:d,samplesDimensions:o,samplesTextEmbedding:p}=await n(),m=parseInt(u,10),{metadataValues:c}=A();return{sampleAdjacents:z({dataset_id:s,sampleIndex:m,tagIds:Array.from(r(f)),annotationLabelIds:Array.from(r(d)),min_width:(_=r(o))==null?void 0:_.min_width,max_width:(e=r(o))==null?void 0:e.max_width,min_height:(t=r(o))==null?void 0:t.min_height,max_height:(l=r(o))==null?void 0:l.max_height,textEmbedding:(g=r(p))==null?void 0:g.embedding,metadataValues:r(c)}),sampleIndex:m}},ee=Object.freeze(Object.defineProperty({__proto__:null,load:C},Symbol.toStringTag,{value:"Module"}));function G(n,s){$(s,!0);const a=()=>F(h(o),"$sampleAdjacents",u),[u,f]=T(),d=v(()=>x.data.sampleIndex),o=v(()=>x.data.sampleAdjacents),p=()=>{a().sampleNext&&b(w.toSample({sampleId:a().sampleNext.sample_id,datasetId:a().sampleNext.sample.dataset_id,sampleIndex:h(d)+1}),{invalidateAll:!0})},m=()=>{a().samplePrevious&&b(w.toSample({sampleId:a().samplePrevious.sample_id,datasetId:a().samplePrevious.sample.dataset_id,sampleIndex:h(d)-1}),{invalidateAll:!0})},c=t=>{switch(t.key){case"ArrowRight":p();break;case"ArrowLeft":m();break}};var i=E();k("keydown",N,c);var _=j(i);{var e=t=>{{let l=v(()=>!!a().samplePrevious),g=v(()=>!!a().sampleNext);M(t,{get hasPrevious(){return h(l)},get hasNext(){return h(g)},onPrevious:m,onNext:p})}};O(_,t=>{a()&&t(e)})}D(n,i),y(),f()}function ae(n){G(n,{})}export{ae as component,ee as universal};
@@ -0,0 +1 @@
1
+ import"../chunks/CWj6FrbW.js";import{x as ve,i as re,p as he,d as B,e as Oe,c as S,h as D,g as e,s as ne,r as I,t as pe,a as ye,u as je,b as u,n as Ke,f as q}from"../chunks/DkbXUtyG.js";import{d as xe}from"../chunks/D9SC3jBb.js";import{f as z,a as h,c as Y}from"../chunks/CmLg0ys7.js";import{i as M,s as _,a as Qe}from"../chunks/B_1cpokE.js";import{d as be,k as fe,a as Re,s as H}from"../chunks/C8mfFM-u.js";import{t as Ue,q as Ye,l as Ze,x as ge,G as Je,L as Xe,z as $e}from"../chunks/CGY1p9L4.js";import{b as et}from"../chunks/DuUalyFS.js";import"../chunks/CvGjimpO.js";import{u as _e}from"../chunks/KNLP4aJU.js";import"../chunks/D_FFv0Oe.js";import{l as tt,u as at,f as it,e as st}from"../chunks/VYb2dkNs.js";import"../chunks/69_IOA4Y.js";import"../chunks/C80h3dJx.js";import{p as dt}from"../chunks/DwIonDAZ.js";import{u as ot}from"../chunks/da7Oy_lO.js";import"../chunks/DtWZc_tl.js";import{g as rt}from"../chunks/xGHZQ1pe.js";import{e as nt}from"../chunks/BpLiSKgx.js";import{r as lt}from"../chunks/BRmB-kJ9.js";import{V as ut}from"../chunks/BiqpDEr0.js";import{V as ct}from"../chunks/DiZ5o5vz.js";const mt=(r,t,a)=>{const c=tt({path:{dataset_id:r},query:{limit:30},body:{filter:t,text_embedding:a}}),m=Ue({...c,getNextPageParam:g=>g.nextCursor||void 0}),x=at(),F=()=>{x.invalidateQueries({queryKey:c.queryKey})},b=ve([]),p=ve(0);return m.subscribe(g=>{if(g.isSuccess){const v=g.data.pages.flatMap(C=>C.data);b.set(v),p.set(g.data.pages[0].total_count)}}),{data:b,loadMore:()=>{re(m).hasNextPage&&!re(m).isFetchingNextPage&&re(m).fetchNextPage()},query:m,refresh:F,totalCount:p}};function vt(r,t){rt(lt.toVideosDetails(t.video.sample.dataset_id,t.video.sample_id,t.index))}var ft=z('<div class="video-frame-container relative overflow-hidden rounded-lg svelte-1s2jysz" role="img"><!> <!></div>');function gt(r,t){he(t,!0);let a=B(null),c=B(null),m=0,x=!1,F=!1;const b=25;let p=null;const L=200;let g=!1,v=B(Oe(t.video.frame==null?[]:[t.video.frame]));async function C(){g=!0,p=setTimeout(async()=>{await W(),e(a)&&(e(a).readyState<2&&await new Promise(i=>{var s;return(s=e(a))==null?void 0:s.addEventListener("loadeddata",i,{once:!0})}),g&&e(a).play())},L)}function n(){var i;g=!1,p&&(clearTimeout(p),p=null),e(a)&&((i=e(a))==null||i.pause(),e(a).currentTime=0)}function Z(i,s){D(c,i,!0),s!=null&&s%b==0&&s!=0&&W()}async function W(){var O,j,K;if(x||F)return;x=!0;const i=await nt({path:{video_frame_dataset_id:(O=t.video.frame)==null?void 0:O.sample.dataset_id},query:{cursor:m,limit:b},body:{filter:{video_id:t.video.sample_id}}}),s=((j=i==null?void 0:i.data)==null?void 0:j.data)??[];if(s.length===0){F=!0,x=!1;return}D(v,[...e(v),...s],!0),m=((K=i==null?void 0:i.data)==null?void 0:K.nextCursor)??m+b,x=!1}var w=ft();w.__dblclick=[vt,t];var G=S(w);ct(G,{get video(){return t.video},get frames(){return e(v)},update:Z,muted:!0,playsinline:!0,preload:"metadata",handleMouseEnter:C,handleMouseLeave:n,className:"h-full w-full cursor-pointer rounded-lg shadow-md",get videoEl(){return e(a)},set videoEl(i){D(a,i,!0)}});var J=ne(G,2);{var X=i=>{ut(i,{get width(){return t.size},get height(){return t.size},get sampleWidth(){return t.video.width},get sampleHeight(){return t.video.height},get sample(){return e(c)}})};M(J,i=>{e(c)&&i(X)})}I(w),pe(()=>be(w,`width: var(${t.video.width}); height: var(${t.video.height});`)),h(r,w),ye()}xe(["dblclick"]);function _t(r,t,a){const c=r.currentTarget.dataset.sampleId;t(c,a().params.dataset_id)}function ht(r,t,a){if(r.key==="Enter"||r.key===" "){r.preventDefault();const c=r.currentTarget.dataset.sampleId;t(c,a().params.dataset_id)}}var pt=z('<div class="flex h-full w-full items-center justify-center"><!> <div>Loading videos...</div></div>'),yt=z(`<div class="flex h-full w-full items-center justify-center"><div class="text-center text-muted-foreground"><div class="mb-2 text-lg font-medium">No videos found</div> <div class="text-sm">This dataset doesn't contain any videos.</div></div></div>`),xt=z('<div data-testid="video-grid-item" role="button" tabindex="0"><div class="absolute right-7 top-1 z-10"><!></div> <div class="relative overflow-hidden rounded-lg" style="width: var(--sample-width); height: var(--sample-height);"><!></div></div>'),bt=z('<div class="flex justify-center p-4"><!></div>'),wt=z("<!> <!>",1),St=z('<div class="flex flex-1 flex-col space-y-4"><div class="h-full w-full flex-1 overflow-hidden"><!></div></div>');function Qt(r,t){he(t,!0);const a=()=>_(dt,"$page",n),c=()=>_(w,"$metadataValues",n),m=()=>_(W,"$tagsSelected",n),x=()=>_(e(G),"$selectedAnnotationsFilterIds",n),F=()=>_(J,"$videoBoundsValues",n),b=()=>_(i,"$textEmbedding",n),p=()=>_(e(O),"$data",n),L=()=>_(Se,"$sampleSize",n),g=()=>_(e(we),"$totalCount",n),v=()=>_(e(j),"$query",n),C=()=>_(ke,"$selectedSampleIds",n),[n,Z]=Qe(),{tagsSelected:W}=ot({dataset_id:a().params.dataset_id,kind:["sample"]}),{metadataValues:w}=it(),G=u(()=>t.data.selectedAnnotationFilterIds),{videoBoundsValues:J}=Ze(),X=u(()=>({sample_filter:{metadata_filters:w?st(c()):void 0,tag_ids:m().size>0?Array.from(m()):void 0},annotation_frames_label_ids:x(),...F()})),{textEmbedding:i}=_e(),s=u(()=>{var l;return mt(a().params.dataset_id,e(X),(l=b())==null?void 0:l.embedding)}),O=u(()=>e(s).data),j=u(()=>e(s).query),K=u(()=>e(s).loadMore),we=u(()=>e(s).totalCount),{sampleSize:Se,getSelectedSampleIds:Ie,setfilteredSampleCount:Ve,toggleSampleSelection:le}=_e(),ke=Ie(a().params.dataset_id),ze=16;let E=B(null),Fe=B(0),d=u(p);const $=u(()=>e(E)==null||e(E).clientWidth===0?0:e(E).clientWidth/L().width),ee=u(()=>e($)-ze);je(()=>{Ve(g())});var te=St(),Q=S(te),Ce=S(Q);{var Ee=l=>{var A=pt(),ae=S(A);ge(ae,{}),Ke(2),I(A),h(l,A)},Ae=l=>{var A=Y(),ae=q(A);{var Pe=P=>{var R=yt();h(P,R)},Te=P=>{var R=Y(),Me=q(R);{var Ne=ie=>{{const qe=(T,y)=>{let o=()=>y==null?void 0:y().index,se=()=>y==null?void 0:y().style;var U=Y(),V=q(U);{var k=N=>{var ue=Y(),De=q(ue);fe(De,()=>e(d)[o()].sample_id,Le=>{var f=xt();let ce;f.__click=[_t,le,a],f.__keydown=[ht,le,a];var de=S(f),We=S(de);{let oe=u(()=>C().has(e(d)[o()].sample_id));$e(We,{onSelect:()=>{},get isSelected(){return e(oe)}})}I(de);var me=ne(de,2),Ge=S(me);gt(Ge,{get video(){return e(d)[o()]},get size(){return e(ee)},get index(){return o()}}),I(me),I(f),pe(oe=>{ce=Re(f,1,"relative svelte-hobydo",null,ce,oe),be(f,se()),H(f,"data-sample-id",e(d)[o()].sample_id),H(f,"data-dataset-id",e(d)[o()].sample.dataset_id),H(f,"data-video-name",e(d)[o()].file_name),H(f,"data-index",o()),H(f,"aria-label",`View video: ${e(d)[o()].file_name}`)},[()=>({"video-selected":C().has(e(d)[o()].sample_id)})]),h(Le,f)}),h(N,ue)};M(V,N=>{e(d)[o()]&&N(k)})}h(T,U)},He=T=>{var y=wt(),o=q(y);fe(o,()=>e(d).length,V=>{{let k=u(()=>!v().hasNextPage||v().isFetchingNextPage);Xe(V,{get onIntersect(){return e(K)},get disabled(){return e(k)}})}});var se=ne(o,2);{var U=V=>{var k=bt(),N=S(k);ge(N,{}),I(k),h(V,k)};M(se,V=>{v().isFetchingNextPage&&V(U)})}h(T,y)};let Be=u(()=>{var T;return(T=e(E))==null?void 0:T.clientHeight});Je(ie,{get itemCount(){return e(d).length},get itemHeight(){return e($)},get itemWidth(){return e($)},get height(){return e(Be)},class:"overflow-none overflow-y-auto dark:[color-scheme:dark]",get style(){return`--sample-width: ${e(ee)??""}px; --sample-height: ${e(ee)??""}px;`},overScan:20,item:qe,footer:He,$$slots:{item:!0,footer:!0}})}};M(Me,ie=>{v().isSuccess&&e(d).length>0&&ie(Ne)},!0)}h(P,R)};M(ae,P=>{v().isSuccess&&e(d).length==0?P(Pe):P(Te,!1)},!0)}h(l,A)};M(Ce,l=>{v().isPending&&e(d).length===0?l(Ee):l(Ae,!1)})}I(Q),et(Q,l=>D(E,l),()=>e(E)),I(te),Ye(Q,"clientWidth",l=>D(Fe,l)),h(r,te),ye(),Z()}xe(["click","keydown"]);export{Qt as component};
@@ -0,0 +1 @@
1
+ import{g as ke,d as Oe,e as Re}from"../chunks/BpLiSKgx.js";import{x as ze,i as Y,p as He,d as W,e as Le,u as be,g as e,h as T,a as Me,b as j,s as r,c as o,r as i,f as q,t as we,n as We}from"../chunks/DkbXUtyG.js";import{u as Ae}from"../chunks/KNLP4aJU.js";import{u as qe}from"../chunks/da7Oy_lO.js";import{l as Ge,C as ye,n as Ve,o as Ue,b as Fe,M as Ze,B as Je}from"../chunks/CGY1p9L4.js";import{f as Ke,e as Qe}from"../chunks/VYb2dkNs.js";import"../chunks/CWj6FrbW.js";import{s as R}from"../chunks/eAy8rZzC.js";import{f as z,a as w,c as Pe,t as Xe}from"../chunks/CmLg0ys7.js";import{i as G,a as Ye,s as Se}from"../chunks/B_1cpokE.js";import{k as et}from"../chunks/C8mfFM-u.js";import{b as tt}from"../chunks/DuUalyFS.js";import"../chunks/D_FFv0Oe.js";import"../chunks/CvGjimpO.js";import"../chunks/69_IOA4Y.js";import{p as at}from"../chunks/C80h3dJx.js";import{g as Ne,i as st}from"../chunks/xGHZQ1pe.js";import{S as rt}from"../chunks/D4y7iiT3.js";import"../chunks/DtWZc_tl.js";import{r as ee}from"../chunks/BRmB-kJ9.js";import{u as ot}from"../chunks/VRI4prUD.js";import{u as it}from"../chunks/DmK2hulV.js";import{V as nt}from"../chunks/BiqpDEr0.js";import{V as lt}from"../chunks/DiZ5o5vz.js";import{S as dt}from"../chunks/erjNR5MX.js";import{D as mt}from"../chunks/BK4An2kI.js";const ut=({dataset_id:h,sampleIndex:l,filter:u})=>{const c=ze({isLoading:!1});return(async()=>{c.update(n=>({...n,isLoading:!0,error:void 0}));try{const{data:n}=await ke({path:{dataset_id:h},query:{cursor:l<1?0:l-1,limit:3},body:{filter:u},throwOnError:!0}),{setfilteredSampleCount:a}=Ae();a(n==null?void 0:n.total_count);let $;const S=l>0?n.data[0]:void 0;n.data.length>2&&($=l===0?n.data[1]:n.data[2]),c.update(B=>({...B,isLoading:!1,sampleNext:$,samplePrevious:S,error:void 0}))}catch(n){c.update(a=>({...a,isLoading:!1,error:n.message||"Failed to load adjacent videos"}))}})(),c};function vt({tagIds:h,metadata:l,annotationIds:u,bounds:c}){return{sample_filter:{tag_ids:h.size>0?[...h]:void 0,metadata_filters:l?Qe(l):void 0},annotation_frames_label_ids:[...u],...c}}const ct=async({params:h,url:l})=>{const u=h.dataset_id,c=h.sample_id,C=l.searchParams.get("index"),n=C!==null?Number(C):null;let a=null;if(n!==null){const{selectedAnnotationFilterIds:S}=Ae(),{videoBoundsValues:B}=Ge(),{metadataValues:te}=Ke(),{tagsSelected:ae}=qe({dataset_id:u,kind:["sample"]}),se=Y(ae),re=Y(te),N=Y(S),E=Y(B),p=vt({tagIds:se,metadata:re,annotationIds:N,bounds:E});a=ut({dataset_id:u,sampleIndex:n,filter:p})}return{sample:(await Oe({path:{sample_id:c}})).data,videoIndex:n,videoAdjacents:a}},Gt=Object.freeze(Object.defineProperty({__proto__:null,load:ct},Symbol.toStringTag,{value:"Module"}));var pt=z("<!> <!>",1),ft=z('<div class="video-frame-container relative overflow-hidden rounded-lg bg-black svelte-1m63o1l"><!> <!></div>'),_t=z('<div class="min-w-full space-y-3 text-diffuse-foreground"><div class="flex items-start gap-3"><span class="truncate text-sm font-medium" title="Width">Width:</span> <span class="text-sm"> </span></div> <div class="flex items-start gap-3"><span class="truncate text-sm font-medium" title="Height">Height:</span> <span class="text-sm"> </span></div> <div class="flex items-start gap-3"><span class="truncate text-sm font-medium" title="Duration">Duration:</span> <span class="text-sm"> </span></div> <div class="flex items-start gap-3"><span class="truncate text-sm font-medium" title="FPS">FPS:</span> <span class="text-sm"> </span></div></div>'),gt=z('<div class="space-y-2 text-sm text-diffuse-foreground"><div class="flex items-center gap-2"><span class="font-medium">Frame #:</span> <span> </span></div> <div class="flex items-center gap-2"><span class="font-medium">Timestamp:</span> <span> </span></div></div> <!>',1),xt=z("<!> <!> <!> <!>",1),ht=z('<div class="flex h-full w-full flex-col space-y-4"><div class="flex w-full items-center"><!></div> <!> <div class="flex min-h-0 flex-1 gap-4"><!> <!></div></div>');function Ut(h,l){He(l,!0);const u=()=>Se(e(S),"$videoAdjacents",C),c=()=>Se(ae,"$rootDataset",C),[C,n]=Ye(),a=j(()=>l.data.sample),$=j(()=>l.data.videoIndex),S=j(()=>l.data.videoAdjacents),{datasetId:B}=at.data,{removeTagFromSample:te}=it({datasetId:B}),{rootDataset:ae}=ot({datasetId:B}),se=j(()=>{var t,s,d;return((d=(s=(t=e(a))==null?void 0:t.sample)==null?void 0:s.tags)==null?void 0:d.map(A=>({tagId:A.tag_id,name:A.name})))??[]}),re=async t=>{var s;if((s=e(a))!=null&&s.sample_id)try{await te(e(a).sample_id,t),await st()}catch(d){console.error("Error removing tag from video:",d)}};let N=W(null),E=W(Le([])),p=W(void 0),ce=null,oe=W(0),pe=W(0),fe=0,U=0,H=!1,ie=!1;const ne=25;let le;be(()=>{if(!e(N))return;const t=()=>{var d;const s=(d=e(N))==null?void 0:d.getBoundingClientRect();T(oe,(s==null?void 0:s.width)??0,!0),T(pe,(s==null?void 0:s.height)??0,!0)};return t(),le=new ResizeObserver(t),le.observe(e(N)),()=>le.disconnect()});function Ie(t,s){T(p,t,!0),s!=null&&s%ne==0&&s!=0&&fe<s&&_e()}async function _e(){var d,A,x,y,I;if(H||ie)return;H=!0;const t=await Re({path:{video_frame_dataset_id:(A=(d=e(a))==null?void 0:d.frame)==null?void 0:A.sample.dataset_id},query:{cursor:U,limit:ne},body:{filter:{video_id:(x=e(a))==null?void 0:x.sample_id}}}),s=((y=t==null?void 0:t.data)==null?void 0:y.data)??[];if(s.length===0){ie=!0,H=!1;return}T(E,[...e(E),...s],!0),U=((I=t==null?void 0:t.data)==null?void 0:I.nextCursor)??U+ne,H=!1}function De(){_e()}function Te(){var s;if(e($)===null||!e(a)||!e(S))return null;const t=(s=u())==null?void 0:s.sampleNext;if(!t)return null;Ne(ee.toVideosDetails(e(a).sample.dataset_id,t.sample_id,e($)+1))}function je(){var s;if(e($)===null||!e(a)||!e(S))return null;const t=(s=u())==null?void 0:s.samplePrevious;if(!t)return null;Ne(ee.toVideosDetails(e(a).sample.dataset_id,t.sample_id,e($)-1))}let ge=null;be(()=>{if(!e(a))return;const t=e(a).sample_id;t!==ge&&(T(E,e(a).frame?[e(a).frame]:[],!0),T(p,e(a).frame??null,!0),U=0,fe=0,H=!1,ie=!1,ge=t)});var de=ht(),me=o(de),Ce=o(me);{var Be=t=>{mt(t,{get rootDataset(){return c().data},section:"Videos",subsection:"Video",get navigateTo(){return ee.toVideos},get index(){return e($)}})};G(Ce,t=>{c().data&&t(Be)})}i(me);var xe=r(me,2);rt(xe,{class:"mb-4 bg-border-hard"});var he=r(xe,2),$e=o(he);ye($e,{className:"flex w-[60vw] flex-col",children:(t,s)=>{Ve(t,{className:"flex h-full flex-col gap-4 overflow-hidden",children:(d,A)=>{var x=ft(),y=o(x);{var I=v=>{{let f=j(()=>{var m;return!!((m=u())!=null&&m.samplePrevious)}),L=j(()=>{var m;return!!((m=u())!=null&&m.sampleNext)});dt(v,{get hasPrevious(){return e(f)},get hasNext(){return e(L)},onPrevious:je,onNext:Te})}};G(y,v=>{u()&&v(I)})}var Z=r(y,2);et(Z,()=>{var v;return(v=e(a))==null?void 0:v.sample_id},v=>{var f=Pe(),L=q(f);{var m=b=>{var D=pt(),V=q(D);lt(V,{get video(){return e(a)},get frames(){return e(E)},muted:!0,controls:!0,update:Ie,className:"block h-full w-full",onplay:De,get videoEl(){return e(N)},set videoEl(_){T(N,_,!0)}});var F=r(V,2);{var P=_=>{nt(_,{get width(){return e(oe)},get height(){return e(pe)},get sample(){return e(p)},showLabel:!0,get sampleWidth(){return e(a).width},get sampleHeight(){return e(a).height}})};G(F,_=>{e(p)&&e(oe)>0&&_(P)})}w(b,D)};G(L,b=>{e(a)&&b(m)})}w(v,f)}),i(x),tt(x,v=>ce=v,()=>ce),w(d,x)},$$slots:{default:!0}})},$$slots:{default:!0}});var Ee=r($e,2);ye(Ee,{className:"flex flex-1 flex-col overflow-hidden",children:(t,s)=>{Ve(t,{className:"h-full overflow-y-auto",children:(d,A)=>{var x=xt(),y=q(x);Ue(y,{get tags(){return e(se)},onClick:re});var I=r(y,2);Fe(I,{title:"Sample details",children:(f,L)=>{var m=_t(),b=o(m),D=r(o(b),2),V=o(D);i(D),i(b);var F=r(b,2),P=r(o(F),2),_=o(P);i(P),i(F);var k=r(F,2),J=r(o(k),2),K=o(J);i(J),i(k);var M=r(k,2),Q=r(o(M),2),ue=o(Q,!0);i(Q),i(M),i(m),we((g,O)=>{var ve,X;R(V,`${((ve=e(a))==null?void 0:ve.width)??""}px`),R(_,`${((X=e(a))==null?void 0:X.height)??""}px`),R(K,`${g??""} seconds`),R(ue,O)},[()=>{var g,O;return(O=(g=e(a))==null?void 0:g.duration_s)==null?void 0:O.toFixed(2)},()=>{var g;return(g=e(a))==null?void 0:g.fps.toFixed(2)}]),w(f,m)}});var Z=r(I,2);Ze(Z,{get metadata_dict(){var f;return(f=e(a))==null?void 0:f.sample.metadata_dict}});var v=r(Z,2);Fe(v,{title:"Current Frame",children:(f,L)=>{var m=Pe(),b=q(m);{var D=V=>{var F=gt(),P=q(F),_=o(P),k=r(o(_),2),J=o(k,!0);i(k),i(_);var K=r(_,2),M=r(o(K),2),Q=o(M);i(M),i(K),i(P);var ue=r(P,2);{let g=j(()=>ee.toFramesDetails(e(p).sample.dataset_id,e(p).sample_id));Je(ue,{variant:"secondary",class:"mt-4 w-full",get href(){return e(g)},children:(O,ve)=>{We();var X=Xe("View frame");w(O,X)},$$slots:{default:!0}})}we(g=>{R(J,e(p).frame_number),R(Q,`${g??""} s`)},[()=>e(p).frame_timestamp_s.toFixed(3)]),w(V,F)};G(b,V=>{e(p)&&V(D)})}w(f,m)}}),w(d,x)},$$slots:{default:!0}})},$$slots:{default:!0}}),i(he),i(de),w(h,de),Me(),n()}export{Ut as component,Gt as universal};