scitex 2.7.0__py3-none-any.whl → 2.8.1__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 (355) hide show
  1. scitex/__init__.py +6 -2
  2. scitex/__version__.py +1 -1
  3. scitex/audio/README.md +52 -0
  4. scitex/audio/__init__.py +384 -0
  5. scitex/audio/__main__.py +129 -0
  6. scitex/audio/_tts.py +334 -0
  7. scitex/audio/engines/__init__.py +44 -0
  8. scitex/audio/engines/base.py +275 -0
  9. scitex/audio/engines/elevenlabs_engine.py +143 -0
  10. scitex/audio/engines/gtts_engine.py +162 -0
  11. scitex/audio/engines/pyttsx3_engine.py +131 -0
  12. scitex/audio/mcp_server.py +757 -0
  13. scitex/bridge/_helpers.py +1 -1
  14. scitex/bridge/_plt_vis.py +1 -1
  15. scitex/bridge/_stats_vis.py +1 -1
  16. scitex/dev/plt/__init__.py +272 -0
  17. scitex/dev/plt/plot_mpl_axhline.py +28 -0
  18. scitex/dev/plt/plot_mpl_axhspan.py +28 -0
  19. scitex/dev/plt/plot_mpl_axvline.py +28 -0
  20. scitex/dev/plt/plot_mpl_axvspan.py +28 -0
  21. scitex/dev/plt/plot_mpl_bar.py +29 -0
  22. scitex/dev/plt/plot_mpl_barh.py +29 -0
  23. scitex/dev/plt/plot_mpl_boxplot.py +28 -0
  24. scitex/dev/plt/plot_mpl_contour.py +31 -0
  25. scitex/dev/plt/plot_mpl_contourf.py +31 -0
  26. scitex/dev/plt/plot_mpl_errorbar.py +30 -0
  27. scitex/dev/plt/plot_mpl_eventplot.py +28 -0
  28. scitex/dev/plt/plot_mpl_fill.py +30 -0
  29. scitex/dev/plt/plot_mpl_fill_between.py +31 -0
  30. scitex/dev/plt/plot_mpl_hexbin.py +28 -0
  31. scitex/dev/plt/plot_mpl_hist.py +28 -0
  32. scitex/dev/plt/plot_mpl_hist2d.py +28 -0
  33. scitex/dev/plt/plot_mpl_imshow.py +29 -0
  34. scitex/dev/plt/plot_mpl_pcolormesh.py +31 -0
  35. scitex/dev/plt/plot_mpl_pie.py +29 -0
  36. scitex/dev/plt/plot_mpl_plot.py +29 -0
  37. scitex/dev/plt/plot_mpl_quiver.py +31 -0
  38. scitex/dev/plt/plot_mpl_scatter.py +28 -0
  39. scitex/dev/plt/plot_mpl_stackplot.py +31 -0
  40. scitex/dev/plt/plot_mpl_stem.py +29 -0
  41. scitex/dev/plt/plot_mpl_step.py +29 -0
  42. scitex/dev/plt/plot_mpl_violinplot.py +28 -0
  43. scitex/dev/plt/plot_sns_barplot.py +29 -0
  44. scitex/dev/plt/plot_sns_boxplot.py +29 -0
  45. scitex/dev/plt/plot_sns_heatmap.py +28 -0
  46. scitex/dev/plt/plot_sns_histplot.py +29 -0
  47. scitex/dev/plt/plot_sns_kdeplot.py +29 -0
  48. scitex/dev/plt/plot_sns_lineplot.py +31 -0
  49. scitex/dev/plt/plot_sns_scatterplot.py +29 -0
  50. scitex/dev/plt/plot_sns_stripplot.py +29 -0
  51. scitex/dev/plt/plot_sns_swarmplot.py +29 -0
  52. scitex/dev/plt/plot_sns_violinplot.py +29 -0
  53. scitex/dev/plt/plot_stx_bar.py +29 -0
  54. scitex/dev/plt/plot_stx_barh.py +29 -0
  55. scitex/dev/plt/plot_stx_box.py +28 -0
  56. scitex/dev/plt/plot_stx_boxplot.py +28 -0
  57. scitex/dev/plt/plot_stx_conf_mat.py +28 -0
  58. scitex/dev/plt/plot_stx_contour.py +31 -0
  59. scitex/dev/plt/plot_stx_ecdf.py +28 -0
  60. scitex/dev/plt/plot_stx_errorbar.py +30 -0
  61. scitex/dev/plt/plot_stx_fill_between.py +31 -0
  62. scitex/dev/plt/plot_stx_fillv.py +28 -0
  63. scitex/dev/plt/plot_stx_heatmap.py +28 -0
  64. scitex/dev/plt/plot_stx_image.py +28 -0
  65. scitex/dev/plt/plot_stx_imshow.py +28 -0
  66. scitex/dev/plt/plot_stx_joyplot.py +28 -0
  67. scitex/dev/plt/plot_stx_kde.py +28 -0
  68. scitex/dev/plt/plot_stx_line.py +28 -0
  69. scitex/dev/plt/plot_stx_mean_ci.py +28 -0
  70. scitex/dev/plt/plot_stx_mean_std.py +28 -0
  71. scitex/dev/plt/plot_stx_median_iqr.py +28 -0
  72. scitex/dev/plt/plot_stx_raster.py +28 -0
  73. scitex/dev/plt/plot_stx_rectangle.py +28 -0
  74. scitex/dev/plt/plot_stx_scatter.py +29 -0
  75. scitex/dev/plt/plot_stx_shaded_line.py +29 -0
  76. scitex/dev/plt/plot_stx_violin.py +28 -0
  77. scitex/dev/plt/plot_stx_violinplot.py +28 -0
  78. scitex/diagram/README.md +197 -0
  79. scitex/diagram/__init__.py +48 -0
  80. scitex/diagram/_compile.py +312 -0
  81. scitex/diagram/_diagram.py +355 -0
  82. scitex/diagram/_presets.py +173 -0
  83. scitex/diagram/_schema.py +182 -0
  84. scitex/diagram/_split.py +278 -0
  85. scitex/fig/__init__.py +352 -0
  86. scitex/{vis → fig}/backend/_parser.py +1 -1
  87. scitex/{vis → fig}/canvas.py +1 -1
  88. scitex/{vis → fig}/editor/__init__.py +5 -2
  89. scitex/{vis → fig}/editor/_dearpygui_editor.py +1 -1
  90. scitex/{vis → fig}/editor/_defaults.py +70 -5
  91. scitex/{vis → fig}/editor/_mpl_editor.py +1 -1
  92. scitex/{vis → fig}/editor/_qt_editor.py +182 -2
  93. scitex/{vis → fig}/editor/_tkinter_editor.py +1 -1
  94. scitex/fig/editor/edit/__init__.py +50 -0
  95. scitex/fig/editor/edit/backend_detector.py +109 -0
  96. scitex/fig/editor/edit/bundle_resolver.py +240 -0
  97. scitex/fig/editor/edit/editor_launcher.py +239 -0
  98. scitex/fig/editor/edit/manual_handler.py +53 -0
  99. scitex/fig/editor/edit/panel_loader.py +232 -0
  100. scitex/fig/editor/edit/path_resolver.py +67 -0
  101. scitex/fig/editor/flask_editor/_bbox.py +1299 -0
  102. scitex/fig/editor/flask_editor/_core.py +1429 -0
  103. scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
  104. scitex/fig/editor/flask_editor/_renderer.py +813 -0
  105. scitex/fig/editor/flask_editor/static/css/base/reset.css +41 -0
  106. scitex/fig/editor/flask_editor/static/css/base/typography.css +16 -0
  107. scitex/fig/editor/flask_editor/static/css/base/variables.css +85 -0
  108. scitex/fig/editor/flask_editor/static/css/components/buttons.css +217 -0
  109. scitex/fig/editor/flask_editor/static/css/components/context-menu.css +93 -0
  110. scitex/fig/editor/flask_editor/static/css/components/dropdown.css +57 -0
  111. scitex/fig/editor/flask_editor/static/css/components/forms.css +112 -0
  112. scitex/fig/editor/flask_editor/static/css/components/modal.css +59 -0
  113. scitex/fig/editor/flask_editor/static/css/components/sections.css +212 -0
  114. scitex/fig/editor/flask_editor/static/css/features/canvas.css +176 -0
  115. scitex/fig/editor/flask_editor/static/css/features/element-inspector.css +190 -0
  116. scitex/fig/editor/flask_editor/static/css/features/loading.css +59 -0
  117. scitex/fig/editor/flask_editor/static/css/features/overlay.css +45 -0
  118. scitex/fig/editor/flask_editor/static/css/features/panel-grid.css +95 -0
  119. scitex/fig/editor/flask_editor/static/css/features/selection.css +101 -0
  120. scitex/fig/editor/flask_editor/static/css/features/statistics.css +138 -0
  121. scitex/fig/editor/flask_editor/static/css/index.css +31 -0
  122. scitex/fig/editor/flask_editor/static/css/layout/container.css +7 -0
  123. scitex/fig/editor/flask_editor/static/css/layout/controls.css +56 -0
  124. scitex/fig/editor/flask_editor/static/css/layout/preview.css +78 -0
  125. scitex/fig/editor/flask_editor/static/js/alignment/axis.js +314 -0
  126. scitex/fig/editor/flask_editor/static/js/alignment/basic.js +107 -0
  127. scitex/fig/editor/flask_editor/static/js/alignment/distribute.js +54 -0
  128. scitex/fig/editor/flask_editor/static/js/canvas/canvas.js +172 -0
  129. scitex/fig/editor/flask_editor/static/js/canvas/dragging.js +258 -0
  130. scitex/fig/editor/flask_editor/static/js/canvas/resize.js +48 -0
  131. scitex/fig/editor/flask_editor/static/js/canvas/selection.js +71 -0
  132. scitex/fig/editor/flask_editor/static/js/core/api.js +288 -0
  133. scitex/fig/editor/flask_editor/static/js/core/state.js +143 -0
  134. scitex/fig/editor/flask_editor/static/js/core/utils.js +245 -0
  135. scitex/fig/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
  136. scitex/fig/editor/flask_editor/static/js/editor/bbox.js +339 -0
  137. scitex/fig/editor/flask_editor/static/js/editor/element-drag.js +286 -0
  138. scitex/fig/editor/flask_editor/static/js/editor/overlay.js +371 -0
  139. scitex/fig/editor/flask_editor/static/js/editor/preview.js +293 -0
  140. scitex/fig/editor/flask_editor/static/js/main.js +426 -0
  141. scitex/fig/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
  142. scitex/fig/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
  143. scitex/fig/editor/flask_editor/static/js/ui/controls.js +184 -0
  144. scitex/fig/editor/flask_editor/static/js/ui/download.js +57 -0
  145. scitex/fig/editor/flask_editor/static/js/ui/help.js +100 -0
  146. scitex/fig/editor/flask_editor/static/js/ui/theme.js +34 -0
  147. scitex/fig/editor/flask_editor/templates/__init__.py +123 -0
  148. scitex/fig/editor/flask_editor/templates/_html.py +852 -0
  149. scitex/fig/editor/flask_editor/templates/_scripts.py +4933 -0
  150. scitex/fig/editor/flask_editor/templates/_styles.py +1658 -0
  151. scitex/{vis → fig}/io/__init__.py +13 -1
  152. scitex/fig/io/_bundle.py +1058 -0
  153. scitex/{vis → fig}/io/_canvas.py +1 -1
  154. scitex/{vis → fig}/io/_data.py +1 -1
  155. scitex/{vis → fig}/io/_export.py +1 -1
  156. scitex/{vis → fig}/io/_load.py +1 -1
  157. scitex/{vis → fig}/io/_panel.py +1 -1
  158. scitex/{vis → fig}/io/_save.py +1 -1
  159. scitex/{vis → fig}/model/__init__.py +1 -1
  160. scitex/{vis → fig}/model/_annotations.py +1 -1
  161. scitex/{vis → fig}/model/_axes.py +1 -1
  162. scitex/{vis → fig}/model/_figure.py +1 -1
  163. scitex/{vis → fig}/model/_guides.py +1 -1
  164. scitex/{vis → fig}/model/_plot.py +1 -1
  165. scitex/{vis → fig}/model/_styles.py +1 -1
  166. scitex/{vis → fig}/utils/__init__.py +1 -1
  167. scitex/io/__init__.py +22 -26
  168. scitex/io/_bundle.py +493 -0
  169. scitex/io/_flush.py +5 -2
  170. scitex/io/_load.py +98 -0
  171. scitex/io/_load_modules/_H5Explorer.py +5 -2
  172. scitex/io/_load_modules/_canvas.py +2 -2
  173. scitex/io/_load_modules/_image.py +3 -4
  174. scitex/io/_load_modules/_txt.py +4 -2
  175. scitex/io/_metadata.py +34 -324
  176. scitex/io/_metadata_modules/__init__.py +46 -0
  177. scitex/io/_metadata_modules/_embed.py +70 -0
  178. scitex/io/_metadata_modules/_read.py +64 -0
  179. scitex/io/_metadata_modules/_utils.py +79 -0
  180. scitex/io/_metadata_modules/embed_metadata_jpeg.py +74 -0
  181. scitex/io/_metadata_modules/embed_metadata_pdf.py +53 -0
  182. scitex/io/_metadata_modules/embed_metadata_png.py +26 -0
  183. scitex/io/_metadata_modules/embed_metadata_svg.py +62 -0
  184. scitex/io/_metadata_modules/read_metadata_jpeg.py +57 -0
  185. scitex/io/_metadata_modules/read_metadata_pdf.py +51 -0
  186. scitex/io/_metadata_modules/read_metadata_png.py +39 -0
  187. scitex/io/_metadata_modules/read_metadata_svg.py +44 -0
  188. scitex/io/_qr_utils.py +5 -3
  189. scitex/io/_save.py +548 -30
  190. scitex/io/_save_modules/_canvas.py +3 -3
  191. scitex/io/_save_modules/_image.py +5 -9
  192. scitex/io/_save_modules/_tex.py +7 -4
  193. scitex/io/_zip_bundle.py +439 -0
  194. scitex/io/utils/h5_to_zarr.py +11 -9
  195. scitex/msword/__init__.py +255 -0
  196. scitex/msword/profiles.py +357 -0
  197. scitex/msword/reader.py +753 -0
  198. scitex/msword/utils.py +289 -0
  199. scitex/msword/writer.py +362 -0
  200. scitex/plt/__init__.py +5 -2
  201. scitex/plt/_subplots/_AxesWrapper.py +6 -6
  202. scitex/plt/_subplots/_AxisWrapper.py +15 -9
  203. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/__init__.py +36 -0
  204. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_labels.py +264 -0
  205. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_metadata.py +213 -0
  206. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_visual.py +128 -0
  207. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +59 -0
  208. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_base.py +34 -0
  209. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_scientific.py +593 -0
  210. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_statistical.py +654 -0
  211. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_stx_aliases.py +527 -0
  212. scitex/plt/_subplots/_AxisWrapperMixins/_RawMatplotlibMixin.py +321 -0
  213. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/__init__.py +33 -0
  214. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_base.py +152 -0
  215. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +600 -0
  216. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +79 -5
  217. scitex/plt/_subplots/_FigWrapper.py +6 -6
  218. scitex/plt/_subplots/_SubplotsWrapper.py +28 -18
  219. scitex/plt/_subplots/_export_as_csv.py +35 -5
  220. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +8 -0
  221. scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +10 -21
  222. scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +18 -7
  223. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +28 -12
  224. scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +10 -4
  225. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +13 -1
  226. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +12 -2
  227. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +10 -3
  228. scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +10 -4
  229. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +18 -3
  230. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +44 -36
  231. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +14 -2
  232. scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +11 -5
  233. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_bar.py +84 -0
  234. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_barh.py +85 -0
  235. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_conf_mat.py +14 -3
  236. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
  237. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +14 -2
  238. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
  239. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +16 -6
  240. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +29 -19
  241. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
  242. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +22 -5
  243. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +18 -14
  244. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +18 -14
  245. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +18 -14
  246. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +10 -2
  247. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter.py +51 -0
  248. scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter_hist.py +18 -9
  249. scitex/plt/ax/_plot/_stx_ecdf.py +4 -2
  250. scitex/plt/gallery/_generate.py +421 -14
  251. scitex/plt/io/__init__.py +53 -0
  252. scitex/plt/io/_bundle.py +490 -0
  253. scitex/plt/io/_layered_bundle.py +1343 -0
  254. scitex/plt/styles/SCITEX_STYLE.yaml +26 -0
  255. scitex/plt/styles/__init__.py +14 -0
  256. scitex/plt/styles/presets.py +78 -0
  257. scitex/plt/utils/__init__.py +13 -1
  258. scitex/plt/utils/_collect_figure_metadata.py +10 -14
  259. scitex/plt/utils/_configure_mpl.py +6 -18
  260. scitex/plt/utils/_crop.py +32 -14
  261. scitex/plt/utils/_csv_column_naming.py +54 -0
  262. scitex/plt/utils/_figure_mm.py +116 -1
  263. scitex/plt/utils/_hitmap.py +1643 -0
  264. scitex/plt/utils/metadata/__init__.py +25 -0
  265. scitex/plt/utils/metadata/_core.py +9 -10
  266. scitex/plt/utils/metadata/_dimensions.py +6 -3
  267. scitex/plt/utils/metadata/_editable_export.py +405 -0
  268. scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
  269. scitex/schema/__init__.py +109 -16
  270. scitex/schema/_canvas.py +1 -1
  271. scitex/schema/_plot.py +1015 -0
  272. scitex/schema/_stats.py +2 -2
  273. scitex/stats/__init__.py +117 -0
  274. scitex/stats/io/__init__.py +29 -0
  275. scitex/stats/io/_bundle.py +156 -0
  276. scitex/tex/__init__.py +4 -0
  277. scitex/tex/_export.py +890 -0
  278. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/METADATA +11 -1
  279. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/RECORD +294 -170
  280. scitex/io/memo.md +0 -2827
  281. scitex/plt/REQUESTS.md +0 -191
  282. scitex/plt/_subplots/TODO.md +0 -53
  283. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +0 -559
  284. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +0 -1609
  285. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +0 -447
  286. scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_between.json +0 -110
  287. scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_betweenx.json +0 -88
  288. scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fill_between.json +0 -103
  289. scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fillv.json +0 -106
  290. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/bar.json +0 -92
  291. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/barh.json +0 -92
  292. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/boxplot.json +0 -92
  293. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_bar.json +0 -84
  294. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_barh.json +0 -84
  295. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_box.json +0 -83
  296. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_boxplot.json +0 -93
  297. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violin.json +0 -91
  298. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violinplot.json +0 -91
  299. scitex/plt/templates/research-master/scitex/vis/gallery/categorical/violinplot.json +0 -91
  300. scitex/plt/templates/research-master/scitex/vis/gallery/contour/contour.json +0 -97
  301. scitex/plt/templates/research-master/scitex/vis/gallery/contour/contourf.json +0 -98
  302. scitex/plt/templates/research-master/scitex/vis/gallery/contour/stx_contour.json +0 -84
  303. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist.json +0 -101
  304. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist2d.json +0 -96
  305. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_ecdf.json +0 -95
  306. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_joyplot.json +0 -95
  307. scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_kde.json +0 -93
  308. scitex/plt/templates/research-master/scitex/vis/gallery/grid/imshow.json +0 -95
  309. scitex/plt/templates/research-master/scitex/vis/gallery/grid/matshow.json +0 -95
  310. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_conf_mat.json +0 -83
  311. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_heatmap.json +0 -92
  312. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_image.json +0 -121
  313. scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_imshow.json +0 -84
  314. scitex/plt/templates/research-master/scitex/vis/gallery/line/plot.json +0 -110
  315. scitex/plt/templates/research-master/scitex/vis/gallery/line/step.json +0 -92
  316. scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_line.json +0 -95
  317. scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_shaded_line.json +0 -96
  318. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/hexbin.json +0 -95
  319. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/scatter.json +0 -95
  320. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stem.json +0 -92
  321. scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stx_scatter.json +0 -84
  322. scitex/plt/templates/research-master/scitex/vis/gallery/special/pie.json +0 -94
  323. scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_raster.json +0 -109
  324. scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_rectangle.json +0 -108
  325. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/errorbar.json +0 -93
  326. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_errorbar.json +0 -84
  327. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_ci.json +0 -96
  328. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_std.json +0 -96
  329. scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_median_iqr.json +0 -96
  330. scitex/plt/templates/research-master/scitex/vis/gallery/vector/quiver.json +0 -99
  331. scitex/plt/templates/research-master/scitex/vis/gallery/vector/streamplot.json +0 -100
  332. scitex/vis/__init__.py +0 -177
  333. scitex/vis/editor/_edit.py +0 -390
  334. scitex/vis/editor/flask_editor/_bbox.py +0 -529
  335. scitex/vis/editor/flask_editor/_core.py +0 -168
  336. scitex/vis/editor/flask_editor/_renderer.py +0 -393
  337. scitex/vis/editor/flask_editor/templates/__init__.py +0 -33
  338. scitex/vis/editor/flask_editor/templates/_html.py +0 -513
  339. scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
  340. scitex/vis/editor/flask_editor/templates/_styles.py +0 -739
  341. /scitex/{vis → fig}/README.md +0 -0
  342. /scitex/{vis → fig}/backend/__init__.py +0 -0
  343. /scitex/{vis → fig}/backend/_export.py +0 -0
  344. /scitex/{vis → fig}/backend/_render.py +0 -0
  345. /scitex/{vis → fig}/docs/CANVAS_ARCHITECTURE.md +0 -0
  346. /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
  347. /scitex/{vis → fig}/editor/flask_editor/__init__.py +0 -0
  348. /scitex/{vis → fig}/editor/flask_editor/_utils.py +0 -0
  349. /scitex/{vis → fig}/io/_directory.py +0 -0
  350. /scitex/{vis → fig}/model/_plot_types.py +0 -0
  351. /scitex/{vis → fig}/utils/_defaults.py +0 -0
  352. /scitex/{vis → fig}/utils/_validate.py +0 -0
  353. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/WHEEL +0 -0
  354. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/entry_points.txt +0 -0
  355. {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,739 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # File: ./src/scitex/vis/editor/flask_editor/templates/styles.py
4
- """CSS styles for the Flask editor UI."""
5
-
6
- CSS_STYLES = """
7
- /* =============================================================================
8
- * SciTeX Color System - Based on scitex-cloud/static/shared/css
9
- * ============================================================================= */
10
- :root, [data-theme="light"] {
11
- /* Brand colors (light mode) */
12
- --scitex-01: #1a2a40;
13
- --scitex-02: #34495e;
14
- --scitex-03: #506b7a;
15
- --scitex-04: #6c8ba0;
16
- --scitex-05: #8fa4b0;
17
- --scitex-06: #b5c7d1;
18
- --scitex-07: #d4e1e8;
19
- --white: #fafbfc;
20
- --gray-subtle: #f6f8fa;
21
-
22
- /* Semantic tokens */
23
- --text-primary: var(--scitex-01);
24
- --text-secondary: var(--scitex-02);
25
- --text-muted: var(--scitex-04);
26
- --text-inverse: var(--white);
27
-
28
- --bg-page: #fefefe;
29
- --bg-surface: var(--white);
30
- --bg-muted: var(--gray-subtle);
31
-
32
- --border-default: var(--scitex-05);
33
- --border-muted: var(--scitex-06);
34
-
35
- /* Workspace colors */
36
- --workspace-bg-primary: #f8f9fa;
37
- --workspace-bg-secondary: #f3f4f6;
38
- --workspace-bg-tertiary: #ebedef;
39
- --workspace-bg-elevated: #ffffff;
40
- --workspace-border-subtle: #e0e4e8;
41
- --workspace-border-default: #b5c7d1;
42
-
43
- /* Status */
44
- --status-success: #4a9b7e;
45
- --status-warning: #b8956a;
46
- --status-error: #a67373;
47
-
48
- /* CTA */
49
- --color-cta: #3b82f6;
50
- --color-cta-hover: #2563eb;
51
-
52
- /* Preview background (checkered for transparency) */
53
- --preview-bg: linear-gradient(45deg, #e0e0e0 25%, transparent 25%),
54
- linear-gradient(-45deg, #e0e0e0 25%, transparent 25%),
55
- linear-gradient(45deg, transparent 75%, #e0e0e0 75%),
56
- linear-gradient(-45deg, transparent 75%, #e0e0e0 75%);
57
- }
58
-
59
- [data-theme="dark"] {
60
- /* Semantic tokens (dark mode) */
61
- --text-primary: var(--scitex-07);
62
- --text-secondary: var(--scitex-05);
63
- --text-muted: var(--scitex-04);
64
- --text-inverse: var(--scitex-01);
65
-
66
- --bg-page: #0f1419;
67
- --bg-surface: var(--scitex-01);
68
- --bg-muted: var(--scitex-02);
69
-
70
- --border-default: var(--scitex-03);
71
- --border-muted: var(--scitex-02);
72
-
73
- /* Workspace colors */
74
- --workspace-bg-primary: #0d0d0d;
75
- --workspace-bg-secondary: #151515;
76
- --workspace-bg-tertiary: #1a1a1a;
77
- --workspace-bg-elevated: #1f1f1f;
78
- --workspace-border-subtle: #1a1a1a;
79
- --workspace-border-default: #3a3a3a;
80
-
81
- /* Status */
82
- --status-success: #6ba89a;
83
- --status-warning: #d4a87a;
84
- --status-error: #c08888;
85
-
86
- /* Preview background (darker checkered) */
87
- --preview-bg: linear-gradient(45deg, #2a2a2a 25%, transparent 25%),
88
- linear-gradient(-45deg, #2a2a2a 25%, transparent 25%),
89
- linear-gradient(45deg, transparent 75%, #2a2a2a 75%),
90
- linear-gradient(-45deg, transparent 75%, #2a2a2a 75%);
91
- }
92
-
93
- /* =============================================================================
94
- * Base Styles
95
- * ============================================================================= */
96
- * { box-sizing: border-box; margin: 0; padding: 0; }
97
-
98
- body {
99
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
100
- background: var(--workspace-bg-primary);
101
- color: var(--text-primary);
102
- transition: background 0.3s, color 0.3s;
103
- }
104
-
105
- .container { display: flex; height: 100vh; }
106
-
107
- /* =============================================================================
108
- * Preview Panel
109
- * ============================================================================= */
110
- .preview {
111
- flex: 2;
112
- padding: 20px;
113
- display: flex;
114
- align-items: center;
115
- justify-content: center;
116
- background: var(--workspace-bg-secondary);
117
- }
118
-
119
- .preview-wrapper {
120
- background: var(--preview-bg);
121
- background-size: 20px 20px;
122
- background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
123
- border-radius: 8px;
124
- padding: 10px;
125
- box-shadow: 0 4px 20px rgba(0,0,0,0.15);
126
- }
127
-
128
- .preview img {
129
- max-width: 100%;
130
- max-height: calc(100vh - 80px);
131
- display: block;
132
- }
133
-
134
- /* Hover overlay for interactive selection */
135
- .preview-container {
136
- position: relative;
137
- display: inline-block;
138
- }
139
-
140
- .hover-overlay {
141
- position: absolute;
142
- top: 0;
143
- left: 0;
144
- pointer-events: none;
145
- }
146
-
147
- .hover-rect {
148
- fill: none;
149
- stroke: rgba(100, 180, 255, 0.6);
150
- stroke-width: 1;
151
- pointer-events: none;
152
- }
153
-
154
- .selected-rect {
155
- fill: none;
156
- stroke: rgba(255, 200, 80, 0.8);
157
- stroke-width: 2;
158
- pointer-events: none;
159
- }
160
-
161
- .hover-label {
162
- font-size: 10px;
163
- fill: rgba(100, 180, 255, 0.9);
164
- pointer-events: none;
165
- }
166
-
167
- .selected-label {
168
- font-size: 10px;
169
- fill: rgba(255, 200, 80, 0.9);
170
- pointer-events: none;
171
- }
172
-
173
- .hover-path {
174
- fill: none;
175
- stroke: rgba(100, 180, 255, 0.9);
176
- stroke-width: 4;
177
- stroke-linecap: round;
178
- stroke-linejoin: round;
179
- pointer-events: none;
180
- }
181
-
182
- .selected-path {
183
- fill: none;
184
- stroke: rgba(255, 200, 80, 0.9);
185
- stroke-width: 5;
186
- stroke-linecap: round;
187
- stroke-linejoin: round;
188
- pointer-events: none;
189
- }
190
-
191
- .hover-scatter {
192
- fill: rgba(100, 180, 255, 0.7);
193
- stroke: rgba(100, 180, 255, 0.9);
194
- stroke-width: 1;
195
- pointer-events: none;
196
- }
197
-
198
- .selected-scatter {
199
- fill: rgba(255, 200, 80, 0.7);
200
- stroke: rgba(255, 200, 80, 0.9);
201
- stroke-width: 2;
202
- pointer-events: none;
203
- }
204
-
205
- /* =============================================================================
206
- * Selected Element Panel
207
- * ============================================================================= */
208
- #section-selected {
209
- border: 2px solid var(--accent-muted);
210
- background: var(--bg-secondary);
211
- }
212
-
213
- #section-selected .section-header {
214
- background: var(--accent-muted);
215
- color: var(--text-primary);
216
- font-weight: 600;
217
- }
218
-
219
- .selected-info {
220
- display: flex;
221
- align-items: center;
222
- gap: 10px;
223
- margin-bottom: 12px;
224
- padding: 8px;
225
- background: var(--bg-primary);
226
- border-radius: 4px;
227
- }
228
-
229
- .element-type-badge {
230
- padding: 4px 10px;
231
- border-radius: 12px;
232
- font-size: 11px;
233
- font-weight: 600;
234
- text-transform: uppercase;
235
- }
236
-
237
- .element-type-badge.trace { background: #3498db; color: white; }
238
- .element-type-badge.scatter { background: #e74c3c; color: white; }
239
- .element-type-badge.fill { background: #9b59b6; color: white; }
240
- .element-type-badge.bar { background: #f39c12; color: white; }
241
- .element-type-badge.label { background: #2ecc71; color: white; }
242
- .element-type-badge.panel { background: #34495e; color: white; }
243
- .element-type-badge.legend { background: #1abc9c; color: white; }
244
-
245
- .element-axis-info {
246
- font-size: 12px;
247
- color: var(--text-secondary);
248
- }
249
-
250
- .element-props {
251
- border-top: 1px solid var(--border-color);
252
- padding-top: 12px;
253
- margin-top: 8px;
254
- }
255
-
256
- /* Range slider styling */
257
- input[type="range"] {
258
- width: 100%;
259
- height: 6px;
260
- border-radius: 3px;
261
- background: var(--bg-tertiary);
262
- outline: none;
263
- -webkit-appearance: none;
264
- }
265
-
266
- input[type="range"]::-webkit-slider-thumb {
267
- -webkit-appearance: none;
268
- width: 16px;
269
- height: 16px;
270
- border-radius: 50%;
271
- background: var(--accent);
272
- cursor: pointer;
273
- }
274
-
275
- input[type="range"]::-moz-range-thumb {
276
- width: 16px;
277
- height: 16px;
278
- border-radius: 50%;
279
- background: var(--accent);
280
- cursor: pointer;
281
- border: none;
282
- }
283
-
284
- /* =============================================================================
285
- * Controls Panel
286
- * ============================================================================= */
287
- .controls {
288
- flex: 1;
289
- min-width: 320px;
290
- max-width: 420px;
291
- background: var(--workspace-bg-elevated);
292
- border-left: 1px solid var(--workspace-border-default);
293
- overflow-y: auto;
294
- display: flex;
295
- flex-direction: column;
296
- }
297
-
298
- .controls-header {
299
- padding: 16px 20px;
300
- border-bottom: 1px solid var(--workspace-border-subtle);
301
- display: flex;
302
- justify-content: space-between;
303
- align-items: center;
304
- background: var(--bg-surface);
305
- position: sticky;
306
- top: 0;
307
- z-index: 10;
308
- }
309
-
310
- .controls-header h1 {
311
- font-size: 1.1em;
312
- font-weight: 600;
313
- color: var(--status-success);
314
- }
315
-
316
- .controls-body {
317
- padding: 0 20px 20px;
318
- flex: 1;
319
- }
320
-
321
- .filename {
322
- font-size: 0.8em;
323
- color: var(--text-muted);
324
- margin-top: 4px;
325
- word-break: break-all;
326
- }
327
-
328
- /* Theme toggle */
329
- .theme-toggle {
330
- background: transparent;
331
- border: 1px solid var(--border-muted);
332
- color: var(--text-secondary);
333
- cursor: pointer;
334
- font-size: 16px;
335
- padding: 6px 10px;
336
- border-radius: 6px;
337
- transition: all 0.2s;
338
- display: flex;
339
- align-items: center;
340
- gap: 6px;
341
- }
342
-
343
- .theme-toggle:hover {
344
- background: var(--bg-muted);
345
- border-color: var(--border-default);
346
- }
347
-
348
- /* =============================================================================
349
- * Section Headers
350
- * ============================================================================= */
351
- .section {
352
- margin-top: 16px;
353
- }
354
-
355
- .section-header {
356
- font-size: 0.75em;
357
- font-weight: 600;
358
- text-transform: uppercase;
359
- letter-spacing: 0.5px;
360
- color: var(--text-inverse);
361
- background: var(--status-success);
362
- padding: 8px 12px;
363
- border-radius: 4px;
364
- margin-bottom: 12px;
365
- }
366
-
367
- /* =============================================================================
368
- * Form Fields
369
- * ============================================================================= */
370
- .field { margin-bottom: 12px; }
371
-
372
- .field label {
373
- display: block;
374
- font-size: 0.8em;
375
- font-weight: 500;
376
- margin-bottom: 4px;
377
- color: var(--text-secondary);
378
- }
379
-
380
- .field input[type="text"],
381
- .field input[type="number"],
382
- .field select {
383
- width: 100%;
384
- padding: 8px 10px;
385
- border: 1px solid var(--border-muted);
386
- border-radius: 4px;
387
- background: var(--bg-surface);
388
- color: var(--text-primary);
389
- font-size: 0.85em;
390
- transition: border-color 0.2s;
391
- }
392
-
393
- .field input:focus,
394
- .field select:focus {
395
- outline: none;
396
- border-color: var(--status-success);
397
- }
398
-
399
- .field input[type="color"] {
400
- width: 40px;
401
- height: 32px;
402
- padding: 2px;
403
- border: 1px solid var(--border-muted);
404
- border-radius: 4px;
405
- cursor: pointer;
406
- background: var(--bg-surface);
407
- }
408
-
409
- .field-row {
410
- display: flex;
411
- gap: 10px;
412
- }
413
-
414
- .field-row .field { flex: 1; }
415
-
416
- /* Checkbox styling */
417
- .checkbox-field {
418
- display: flex;
419
- align-items: center;
420
- gap: 8px;
421
- cursor: pointer;
422
- padding: 6px 0;
423
- }
424
-
425
- .checkbox-field input[type="checkbox"] {
426
- width: 16px;
427
- height: 16px;
428
- accent-color: var(--status-success);
429
- }
430
-
431
- .checkbox-field span {
432
- font-size: 0.85em;
433
- color: var(--text-primary);
434
- }
435
-
436
- /* Color field with input */
437
- .color-field {
438
- display: flex;
439
- align-items: center;
440
- gap: 8px;
441
- }
442
-
443
- .color-field input[type="text"] {
444
- flex: 1;
445
- }
446
-
447
- /* =============================================================================
448
- * Traces Section
449
- * ============================================================================= */
450
- .traces-list {
451
- max-height: 200px;
452
- overflow-y: auto;
453
- border: 1px solid var(--border-muted);
454
- border-radius: 4px;
455
- background: var(--bg-muted);
456
- }
457
-
458
- .trace-item {
459
- display: flex;
460
- align-items: center;
461
- gap: 8px;
462
- padding: 8px 10px;
463
- border-bottom: 1px solid var(--border-muted);
464
- font-size: 0.85em;
465
- }
466
-
467
- .trace-item:last-child { border-bottom: none; }
468
-
469
- .trace-color {
470
- width: 24px;
471
- height: 24px;
472
- border-radius: 4px;
473
- border: 1px solid var(--border-default);
474
- cursor: pointer;
475
- }
476
-
477
- .trace-label {
478
- flex: 1;
479
- color: var(--text-primary);
480
- }
481
-
482
- .trace-style select {
483
- padding: 4px 6px;
484
- font-size: 0.8em;
485
- border: 1px solid var(--border-muted);
486
- border-radius: 3px;
487
- background: var(--bg-surface);
488
- color: var(--text-primary);
489
- }
490
-
491
- /* =============================================================================
492
- * Annotations
493
- * ============================================================================= */
494
- .annotations-list {
495
- margin-top: 10px;
496
- max-height: 120px;
497
- overflow-y: auto;
498
- }
499
-
500
- .annotation-item {
501
- display: flex;
502
- justify-content: space-between;
503
- align-items: center;
504
- padding: 6px 10px;
505
- background: var(--bg-muted);
506
- border-radius: 4px;
507
- margin-bottom: 5px;
508
- font-size: 0.85em;
509
- }
510
-
511
- .annotation-item span { color: var(--text-primary); }
512
-
513
- .annotation-item button {
514
- padding: 3px 8px;
515
- font-size: 0.75em;
516
- background: var(--status-error);
517
- border: none;
518
- border-radius: 3px;
519
- color: white;
520
- cursor: pointer;
521
- }
522
-
523
- /* =============================================================================
524
- * Buttons
525
- * ============================================================================= */
526
- .btn {
527
- width: 100%;
528
- padding: 10px 16px;
529
- margin-top: 8px;
530
- border: none;
531
- border-radius: 4px;
532
- cursor: pointer;
533
- font-size: 0.9em;
534
- font-weight: 500;
535
- transition: all 0.2s;
536
- }
537
-
538
- .btn-primary {
539
- background: var(--status-success);
540
- color: white;
541
- }
542
-
543
- .btn-primary:hover {
544
- filter: brightness(1.1);
545
- }
546
-
547
- .btn-secondary {
548
- background: var(--bg-muted);
549
- color: var(--text-primary);
550
- border: 1px solid var(--border-muted);
551
- }
552
-
553
- .btn-secondary:hover {
554
- background: var(--workspace-bg-tertiary);
555
- }
556
-
557
- .btn-cta {
558
- background: var(--color-cta);
559
- color: white;
560
- }
561
-
562
- .btn-cta:hover {
563
- background: var(--color-cta-hover);
564
- }
565
-
566
- /* =============================================================================
567
- * Unit Toggle
568
- * ============================================================================= */
569
- .unit-toggle {
570
- display: flex;
571
- gap: 0;
572
- border-radius: 4px;
573
- overflow: hidden;
574
- border: 1px solid var(--border-default);
575
- }
576
-
577
- .unit-btn {
578
- padding: 4px 12px;
579
- font-size: 0.8em;
580
- font-weight: 500;
581
- border: none;
582
- background: var(--bg-muted);
583
- color: var(--text-muted);
584
- cursor: pointer;
585
- transition: all 0.15s;
586
- }
587
-
588
- .unit-btn:first-child {
589
- border-right: 1px solid var(--border-default);
590
- }
591
-
592
- .unit-btn:hover {
593
- background: var(--bg-surface);
594
- color: var(--text-secondary);
595
- }
596
-
597
- .unit-btn.active {
598
- background: var(--color-cta);
599
- color: white;
600
- }
601
-
602
- /* =============================================================================
603
- * Background Type Toggle
604
- * ============================================================================= */
605
- .bg-toggle {
606
- display: flex;
607
- gap: 6px;
608
- }
609
-
610
- .bg-btn {
611
- display: flex;
612
- flex-direction: column;
613
- align-items: center;
614
- gap: 4px;
615
- padding: 6px 10px;
616
- font-size: 0.75em;
617
- border: 1px solid var(--border-default);
618
- border-radius: 4px;
619
- background: var(--bg-muted);
620
- color: var(--text-muted);
621
- cursor: pointer;
622
- transition: all 0.15s;
623
- flex: 1;
624
- }
625
-
626
- .bg-btn:hover {
627
- background: var(--bg-surface);
628
- color: var(--text-secondary);
629
- }
630
-
631
- .bg-btn.active {
632
- border-color: var(--color-cta);
633
- background: var(--bg-surface);
634
- color: var(--text-primary);
635
- box-shadow: 0 0 0 1px var(--color-cta);
636
- }
637
-
638
- .bg-preview {
639
- width: 20px;
640
- height: 14px;
641
- border-radius: 2px;
642
- border: 1px solid var(--border-default);
643
- }
644
-
645
- .bg-preview.white {
646
- background: #ffffff;
647
- }
648
-
649
- .bg-preview.transparent {
650
- background: linear-gradient(45deg, #ccc 25%, transparent 25%),
651
- linear-gradient(-45deg, #ccc 25%, transparent 25%),
652
- linear-gradient(45deg, transparent 75%, #ccc 75%),
653
- linear-gradient(-45deg, transparent 75%, #ccc 75%);
654
- background-size: 8px 8px;
655
- background-position: 0 0, 0 4px, 4px -4px, -4px 0px;
656
- background-color: #fff;
657
- }
658
-
659
- .bg-preview.black {
660
- background: #000000;
661
- }
662
-
663
- /* =============================================================================
664
- * Status Bar
665
- * ============================================================================= */
666
- .status-bar {
667
- margin-top: 16px;
668
- padding: 10px 12px;
669
- border-radius: 4px;
670
- background: var(--bg-muted);
671
- font-size: 0.8em;
672
- color: var(--text-secondary);
673
- border-left: 3px solid var(--status-success);
674
- }
675
-
676
- .status-bar.error {
677
- border-left-color: var(--status-error);
678
- }
679
-
680
- /* =============================================================================
681
- * Collapsible Sections
682
- * ============================================================================= */
683
- .section-toggle {
684
- cursor: pointer;
685
- display: flex;
686
- align-items: center;
687
- gap: 8px;
688
- }
689
-
690
- .section-toggle::before {
691
- content: "\\25BC";
692
- font-size: 0.7em;
693
- transition: transform 0.2s;
694
- }
695
-
696
- .section-toggle.collapsed::before {
697
- transform: rotate(-90deg);
698
- }
699
-
700
- .section-content {
701
- overflow: hidden;
702
- transition: max-height 0.3s ease;
703
- }
704
-
705
- .section-content.collapsed {
706
- max-height: 0 !important;
707
- }
708
-
709
- /* =============================================================================
710
- * Scrollbar Styling
711
- * ============================================================================= */
712
- .controls::-webkit-scrollbar,
713
- .traces-list::-webkit-scrollbar,
714
- .annotations-list::-webkit-scrollbar {
715
- width: 6px;
716
- }
717
-
718
- .controls::-webkit-scrollbar-track,
719
- .traces-list::-webkit-scrollbar-track,
720
- .annotations-list::-webkit-scrollbar-track {
721
- background: var(--bg-muted);
722
- }
723
-
724
- .controls::-webkit-scrollbar-thumb,
725
- .traces-list::-webkit-scrollbar-thumb,
726
- .annotations-list::-webkit-scrollbar-thumb {
727
- background: var(--border-default);
728
- border-radius: 3px;
729
- }
730
-
731
- .controls::-webkit-scrollbar-thumb:hover,
732
- .traces-list::-webkit-scrollbar-thumb:hover,
733
- .annotations-list::-webkit-scrollbar-thumb:hover {
734
- background: var(--text-muted);
735
- }
736
- """
737
-
738
-
739
- # EOF