figrecipe 0.7.4__py3-none-any.whl → 0.9.0__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 (143) hide show
  1. figrecipe/__init__.py +74 -76
  2. figrecipe/__main__.py +12 -0
  3. figrecipe/_api/_panel.py +67 -0
  4. figrecipe/_api/_save.py +100 -4
  5. figrecipe/_cli/__init__.py +7 -0
  6. figrecipe/_cli/_compose.py +87 -0
  7. figrecipe/_cli/_convert.py +117 -0
  8. figrecipe/_cli/_crop.py +82 -0
  9. figrecipe/_cli/_edit.py +70 -0
  10. figrecipe/_cli/_extract.py +128 -0
  11. figrecipe/_cli/_fonts.py +47 -0
  12. figrecipe/_cli/_info.py +67 -0
  13. figrecipe/_cli/_main.py +58 -0
  14. figrecipe/_cli/_reproduce.py +79 -0
  15. figrecipe/_cli/_style.py +77 -0
  16. figrecipe/_cli/_validate.py +66 -0
  17. figrecipe/_cli/_version.py +50 -0
  18. figrecipe/_composition/__init__.py +32 -0
  19. figrecipe/_composition/_alignment.py +452 -0
  20. figrecipe/_composition/_compose.py +179 -0
  21. figrecipe/_composition/_import_axes.py +127 -0
  22. figrecipe/_composition/_visibility.py +125 -0
  23. figrecipe/_dev/__init__.py +2 -0
  24. figrecipe/_dev/browser/__init__.py +69 -0
  25. figrecipe/_dev/browser/_audio.py +240 -0
  26. figrecipe/_dev/browser/_caption.py +356 -0
  27. figrecipe/_dev/browser/_click_effect.py +146 -0
  28. figrecipe/_dev/browser/_cursor.py +196 -0
  29. figrecipe/_dev/browser/_highlight.py +105 -0
  30. figrecipe/_dev/browser/_narration.py +237 -0
  31. figrecipe/_dev/browser/_recorder.py +446 -0
  32. figrecipe/_dev/browser/_utils.py +178 -0
  33. figrecipe/_dev/browser/_video_trim/__init__.py +152 -0
  34. figrecipe/_dev/browser/_video_trim/_detection.py +223 -0
  35. figrecipe/_dev/browser/_video_trim/_markers.py +140 -0
  36. figrecipe/_editor/__init__.py +36 -36
  37. figrecipe/_editor/_bbox/_extract.py +155 -9
  38. figrecipe/_editor/_bbox/_extract_text.py +124 -0
  39. figrecipe/_editor/_call_overrides.py +183 -0
  40. figrecipe/_editor/_datatable_plot_handlers.py +249 -0
  41. figrecipe/_editor/_figure_layout.py +211 -0
  42. figrecipe/_editor/_flask_app.py +157 -16
  43. figrecipe/_editor/_helpers.py +17 -8
  44. figrecipe/_editor/_hitmap/_detect.py +89 -32
  45. figrecipe/_editor/_hitmap_main.py +4 -4
  46. figrecipe/_editor/_overrides.py +4 -1
  47. figrecipe/_editor/_plot_types_registry.py +190 -0
  48. figrecipe/_editor/_render_overrides.py +38 -11
  49. figrecipe/_editor/_renderer.py +46 -1
  50. figrecipe/_editor/_routes_annotation.py +114 -0
  51. figrecipe/_editor/_routes_axis.py +35 -6
  52. figrecipe/_editor/_routes_captions.py +130 -0
  53. figrecipe/_editor/_routes_composition.py +270 -0
  54. figrecipe/_editor/_routes_core.py +15 -173
  55. figrecipe/_editor/_routes_datatable.py +364 -0
  56. figrecipe/_editor/_routes_element.py +37 -19
  57. figrecipe/_editor/_routes_files.py +443 -0
  58. figrecipe/_editor/_routes_image.py +200 -0
  59. figrecipe/_editor/_routes_snapshot.py +94 -0
  60. figrecipe/_editor/_routes_style.py +28 -8
  61. figrecipe/_editor/_templates/__init__.py +40 -2
  62. figrecipe/_editor/_templates/_html.py +97 -103
  63. figrecipe/_editor/_templates/_html_components/__init__.py +13 -0
  64. figrecipe/_editor/_templates/_html_components/_composition_toolbar.py +79 -0
  65. figrecipe/_editor/_templates/_html_components/_file_browser.py +41 -0
  66. figrecipe/_editor/_templates/_html_datatable.py +92 -0
  67. figrecipe/_editor/_templates/_scripts/__init__.py +58 -0
  68. figrecipe/_editor/_templates/_scripts/_accordion.py +328 -0
  69. figrecipe/_editor/_templates/_scripts/_annotation_drag.py +504 -0
  70. figrecipe/_editor/_templates/_scripts/_api.py +1 -1
  71. figrecipe/_editor/_templates/_scripts/_canvas_context_menu.py +182 -0
  72. figrecipe/_editor/_templates/_scripts/_captions.py +231 -0
  73. figrecipe/_editor/_templates/_scripts/_composition.py +283 -0
  74. figrecipe/_editor/_templates/_scripts/_core.py +94 -37
  75. figrecipe/_editor/_templates/_scripts/_datatable/__init__.py +59 -0
  76. figrecipe/_editor/_templates/_scripts/_datatable/_cell_edit.py +97 -0
  77. figrecipe/_editor/_templates/_scripts/_datatable/_clipboard.py +164 -0
  78. figrecipe/_editor/_templates/_scripts/_datatable/_context_menu.py +221 -0
  79. figrecipe/_editor/_templates/_scripts/_datatable/_core.py +150 -0
  80. figrecipe/_editor/_templates/_scripts/_datatable/_editable.py +511 -0
  81. figrecipe/_editor/_templates/_scripts/_datatable/_import.py +161 -0
  82. figrecipe/_editor/_templates/_scripts/_datatable/_plot.py +261 -0
  83. figrecipe/_editor/_templates/_scripts/_datatable/_selection.py +438 -0
  84. figrecipe/_editor/_templates/_scripts/_datatable/_table.py +256 -0
  85. figrecipe/_editor/_templates/_scripts/_datatable/_tabs.py +354 -0
  86. figrecipe/_editor/_templates/_scripts/_element_editor.py +17 -2
  87. figrecipe/_editor/_templates/_scripts/_files.py +274 -40
  88. figrecipe/_editor/_templates/_scripts/_files_context_menu.py +240 -0
  89. figrecipe/_editor/_templates/_scripts/_hitmap.py +87 -84
  90. figrecipe/_editor/_templates/_scripts/_image_drop.py +428 -0
  91. figrecipe/_editor/_templates/_scripts/_legend_drag.py +5 -0
  92. figrecipe/_editor/_templates/_scripts/_multi_select.py +198 -0
  93. figrecipe/_editor/_templates/_scripts/_panel_drag.py +219 -48
  94. figrecipe/_editor/_templates/_scripts/_panel_drag_snapshot.py +33 -0
  95. figrecipe/_editor/_templates/_scripts/_panel_position.py +238 -54
  96. figrecipe/_editor/_templates/_scripts/_panel_resize.py +230 -0
  97. figrecipe/_editor/_templates/_scripts/_panel_snap.py +307 -0
  98. figrecipe/_editor/_templates/_scripts/_region_select.py +255 -0
  99. figrecipe/_editor/_templates/_scripts/_selection.py +8 -1
  100. figrecipe/_editor/_templates/_scripts/_sync.py +242 -0
  101. figrecipe/_editor/_templates/_scripts/_undo_redo.py +348 -0
  102. figrecipe/_editor/_templates/_scripts/_zoom.py +52 -19
  103. figrecipe/_editor/_templates/_styles/__init__.py +9 -0
  104. figrecipe/_editor/_templates/_styles/_base.py +47 -0
  105. figrecipe/_editor/_templates/_styles/_buttons.py +127 -6
  106. figrecipe/_editor/_templates/_styles/_composition.py +87 -0
  107. figrecipe/_editor/_templates/_styles/_controls.py +168 -3
  108. figrecipe/_editor/_templates/_styles/_datatable/__init__.py +40 -0
  109. figrecipe/_editor/_templates/_styles/_datatable/_editable.py +203 -0
  110. figrecipe/_editor/_templates/_styles/_datatable/_panel.py +268 -0
  111. figrecipe/_editor/_templates/_styles/_datatable/_table.py +479 -0
  112. figrecipe/_editor/_templates/_styles/_datatable/_toolbar.py +384 -0
  113. figrecipe/_editor/_templates/_styles/_datatable/_vars.py +123 -0
  114. figrecipe/_editor/_templates/_styles/_dynamic_props.py +5 -5
  115. figrecipe/_editor/_templates/_styles/_file_browser.py +466 -0
  116. figrecipe/_editor/_templates/_styles/_forms.py +98 -0
  117. figrecipe/_editor/_templates/_styles/_hitmap.py +7 -0
  118. figrecipe/_editor/_templates/_styles/_modals.py +29 -0
  119. figrecipe/_editor/_templates/_styles/_overlays.py +5 -5
  120. figrecipe/_editor/_templates/_styles/_preview.py +213 -8
  121. figrecipe/_editor/_templates/_styles/_spinner.py +117 -0
  122. figrecipe/_editor/static/audio/click.mp3 +0 -0
  123. figrecipe/_editor/static/click.mp3 +0 -0
  124. figrecipe/_editor/static/icons/favicon.ico +0 -0
  125. figrecipe/_integrations/__init__.py +17 -0
  126. figrecipe/_integrations/_scitex_stats.py +298 -0
  127. figrecipe/_params/_DECORATION_METHODS.py +2 -0
  128. figrecipe/_recorder.py +28 -3
  129. figrecipe/_reproducer/_core.py +60 -49
  130. figrecipe/_utils/__init__.py +3 -0
  131. figrecipe/_utils/_bundle.py +205 -0
  132. figrecipe/_wrappers/_axes.py +150 -2
  133. figrecipe/_wrappers/_caption_generator.py +218 -0
  134. figrecipe/_wrappers/_figure.py +26 -1
  135. figrecipe/_wrappers/_stat_annotation.py +274 -0
  136. figrecipe/styles/_style_applier.py +10 -2
  137. figrecipe/styles/presets/SCITEX.yaml +11 -4
  138. {figrecipe-0.7.4.dist-info → figrecipe-0.9.0.dist-info}/METADATA +144 -146
  139. figrecipe-0.9.0.dist-info/RECORD +277 -0
  140. figrecipe-0.9.0.dist-info/entry_points.txt +2 -0
  141. figrecipe-0.7.4.dist-info/RECORD +0 -188
  142. {figrecipe-0.7.4.dist-info → figrecipe-0.9.0.dist-info}/WHEEL +0 -0
  143. {figrecipe-0.7.4.dist-info → figrecipe-0.9.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """HTML component for composition toolbar."""
4
+
5
+ HTML_COMPOSITION_TOOLBAR = """
6
+ <!-- Composition Toolbar -->
7
+ <div id="composition-toolbar" class="composition-toolbar">
8
+ <span class="toolbar-label">Align:</span>
9
+ <button onclick="alignPanels('left')" title="Align Left" class="toolbar-btn">
10
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
11
+ <rect x="2" y="2" width="2" height="12"/>
12
+ <rect x="6" y="4" width="8" height="3"/>
13
+ <rect x="6" y="9" width="5" height="3"/>
14
+ </svg>
15
+ </button>
16
+ <button onclick="alignPanels('center_h')" title="Center Horizontal" class="toolbar-btn">
17
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
18
+ <rect x="7" y="2" width="2" height="12"/>
19
+ <rect x="3" y="4" width="10" height="3"/>
20
+ <rect x="4" y="9" width="8" height="3"/>
21
+ </svg>
22
+ </button>
23
+ <button onclick="alignPanels('right')" title="Align Right" class="toolbar-btn">
24
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
25
+ <rect x="12" y="2" width="2" height="12"/>
26
+ <rect x="2" y="4" width="8" height="3"/>
27
+ <rect x="5" y="9" width="5" height="3"/>
28
+ </svg>
29
+ </button>
30
+ <span class="toolbar-separator"></span>
31
+ <button onclick="alignPanels('top')" title="Align Top" class="toolbar-btn">
32
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
33
+ <rect x="2" y="2" width="12" height="2"/>
34
+ <rect x="3" y="6" width="3" height="8"/>
35
+ <rect x="9" y="6" width="3" height="5"/>
36
+ </svg>
37
+ </button>
38
+ <button onclick="alignPanels('center_v')" title="Center Vertical" class="toolbar-btn">
39
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
40
+ <rect x="2" y="7" width="12" height="2"/>
41
+ <rect x="3" y="2" width="3" height="12"/>
42
+ <rect x="9" y="4" width="3" height="8"/>
43
+ </svg>
44
+ </button>
45
+ <button onclick="alignPanels('bottom')" title="Align Bottom" class="toolbar-btn">
46
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
47
+ <rect x="2" y="12" width="12" height="2"/>
48
+ <rect x="3" y="2" width="3" height="8"/>
49
+ <rect x="9" y="5" width="3" height="5"/>
50
+ </svg>
51
+ </button>
52
+ <span class="toolbar-separator"></span>
53
+ <span class="toolbar-label">Distribute:</span>
54
+ <button onclick="distributePanels('horizontal')" title="Distribute Horizontally" class="toolbar-btn">
55
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
56
+ <rect x="2" y="4" width="3" height="8"/>
57
+ <rect x="6.5" y="4" width="3" height="8"/>
58
+ <rect x="11" y="4" width="3" height="8"/>
59
+ </svg>
60
+ </button>
61
+ <button onclick="distributePanels('vertical')" title="Distribute Vertically" class="toolbar-btn">
62
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
63
+ <rect x="4" y="2" width="8" height="3"/>
64
+ <rect x="4" y="6.5" width="8" height="3"/>
65
+ <rect x="4" y="11" width="8" height="3"/>
66
+ </svg>
67
+ </button>
68
+ <span class="toolbar-separator"></span>
69
+ <button onclick="smartAlign()" title="Smart Align (auto-align rows and columns)" class="toolbar-btn toolbar-btn-primary">
70
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
71
+ <path d="M8 1l2 3H6l2-3zm0 14l-2-3h4l-2 3zM1 8l3-2v4l-3-2zm14 0l-3 2V6l3 2z"/>
72
+ <rect x="6" y="6" width="4" height="4"/>
73
+ </svg>
74
+ <span>Smart</span>
75
+ </button>
76
+ </div>
77
+ """
78
+
79
+ __all__ = ["HTML_COMPOSITION_TOOLBAR"]
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """File browser panel HTML for the figure editor."""
4
+
5
+ HTML_FILE_BROWSER = """
6
+ <!-- File Browser Panel -->
7
+ <div class="file-browser-panel" id="file-browser-panel">
8
+ <div class="file-browser-header">
9
+ <div class="header-title">
10
+ <span>FILES</span>
11
+ </div>
12
+ <div class="file-browser-actions">
13
+ <button id="btn-new-file" class="btn-new-file" title="Create new figure">+</button>
14
+ <button id="btn-refresh-files" title="Refresh file list">&#x21bb;</button>
15
+ <button id="btn-collapse-browser" class="btn-collapse" title="Collapse panel">&#x276E;</button>
16
+ </div>
17
+ </div>
18
+ <div class="file-tree-container" id="file-tree-container">
19
+ <ul class="file-tree" id="file-tree">
20
+ <!-- File tree items populated by JavaScript -->
21
+ </ul>
22
+ </div>
23
+ <div class="file-browser-footer">
24
+ <a href="https://scitex.ai" target="_blank" class="brand-link" title="FigRecipe - Part of SciTeX">
25
+ <img src="data:image/png;base64,SCITEX_ICON_PLACEHOLDER" alt="SciTeX" class="brand-icon">
26
+ <div class="brand-info">
27
+ <span class="brand-name">FigRecipe</span>
28
+ <span class="brand-version">vVERSION_PLACEHOLDER by SciTeX™</span>
29
+ </div>
30
+ </a>
31
+ <div class="brand-meta" DEBUG_META_DISPLAY_PLACEHOLDER>
32
+ <span class="server-time">Started: SERVER_START_TIME_PLACEHOLDER</span>
33
+ </div>
34
+ </div>
35
+ <div class="file-browser-resize" id="file-browser-resize"></div>
36
+ </div>
37
+ """
38
+
39
+ __all__ = ["HTML_FILE_BROWSER"]
40
+
41
+ # EOF
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """HTML template component for the datatable panel.
4
+
5
+ This module contains the HTML for the collapsible datatable panel
6
+ that appears on the left side of the editor.
7
+ Plot type options are generated dynamically from the registry.
8
+ """
9
+
10
+ from .._plot_types_registry import generate_html_options
11
+
12
+
13
+ def get_html_datatable_panel() -> str:
14
+ """Generate HTML for datatable panel with dynamic plot type options."""
15
+ plot_options = generate_html_options()
16
+
17
+ return f"""
18
+ <!-- Datatable Panel (always visible, collapsible) -->
19
+ <div id="datatable-panel" class="datatable-panel">
20
+ <div class="datatable-header">
21
+ <div class="header-title">
22
+ <span>DATA</span>
23
+ </div>
24
+ <div class="datatable-header-actions">
25
+ <button id="btn-shortcuts-info" class="btn-small btn-icon" title="Keyboard shortcuts">&#x2328;</button>
26
+ <button id="btn-collapse-datatable" class="btn-collapse" title="Collapse panel">&#x276E;</button>
27
+ </div>
28
+ </div>
29
+
30
+ <!-- Tab bar for multiple datatables -->
31
+ <div class="datatable-tabs">
32
+ <div id="datatable-tab-list" class="datatable-tab-list">
33
+ <!-- Tabs dynamically populated -->
34
+ </div>
35
+ <button id="btn-new-tab" class="btn-new-tab" title="New data tab">+</button>
36
+ </div>
37
+
38
+ <!-- Tab content container -->
39
+ <div id="datatable-tab-content" class="datatable-tab-content">
40
+ <!-- Import dropzone -->
41
+ <div class="datatable-import" id="datatable-import-section">
42
+ <div id="datatable-dropzone" class="datatable-import-dropzone">
43
+ <p>Drop CSV, TSV, or JSON file here</p>
44
+ <p class="hint">or click to browse</p>
45
+ <input type="file" id="datatable-file-input" accept=".csv,.tsv,.txt,.json">
46
+ <div class="dropzone-divider">or</div>
47
+ <button class="btn-create-new" onclick="event.stopPropagation(); createNewCSV()">Create New Table</button>
48
+ </div>
49
+ </div>
50
+
51
+ <!-- Toolbar (hidden until data loaded) -->
52
+ <div class="datatable-toolbar" style="display: none;">
53
+ <select id="datatable-plot-type" class="plot-type-select" title="Plot type">
54
+ {plot_options}
55
+ </select>
56
+ <div class="split-btn">
57
+ <button id="btn-datatable-plot" class="btn-plot" disabled title="Create new plot">New</button>
58
+ <button id="btn-plot-dropdown" class="btn-plot-dropdown" title="Add to panel">▼</button>
59
+ <div id="plot-dropdown-menu" class="plot-dropdown-menu">
60
+ <!-- Panels populated dynamically -->
61
+ </div>
62
+ </div>
63
+ </div>
64
+
65
+ <!-- Variable assignment (dynamic based on plot type) -->
66
+ <div id="datatable-var-assign" class="datatable-var-assign" style="display: none;">
67
+ <div class="var-assign-header">Assign columns to variables:</div>
68
+ <div id="var-assign-slots" class="var-assign-slots">
69
+ <!-- Slots dynamically populated by JS -->
70
+ </div>
71
+ </div>
72
+
73
+ <!-- Spreadsheet content -->
74
+ <div id="datatable-content" class="datatable-content"></div>
75
+
76
+ <!-- Selection info -->
77
+ <div id="datatable-selection-info" class="datatable-selection-info">
78
+ <span class="selected-count">0</span> columns selected
79
+ </div>
80
+ </div>
81
+ <!-- Resize handle -->
82
+ <div class="datatable-resize" id="datatable-resize"></div>
83
+ </div>
84
+ """
85
+
86
+
87
+ # For backward compatibility
88
+ HTML_DATATABLE_PANEL = get_html_datatable_panel()
89
+
90
+ __all__ = ["HTML_DATATABLE_PANEL", "get_html_datatable_panel"]
91
+
92
+ # EOF
@@ -3,6 +3,7 @@
3
3
  """JavaScript modules for the figure editor.
4
4
 
5
5
  This package contains modular JavaScript organized by functionality:
6
+ - _accordion.py: Panel collapse/expand with state persistence
6
7
  - _api.py: API calls (save, load, update, download)
7
8
  - _colors.py: Color presets and conversion utilities
8
9
  - _core.py: State variables and initialization
@@ -13,32 +14,51 @@ This package contains modular JavaScript organized by functionality:
13
14
  - _inspector.py: Element inspector debugging
14
15
  - _labels.py: Label inputs and axis/legend controls
15
16
  - _modals.py: Theme and shortcuts modals
17
+ - _panel_snap.py: Panel snapping (grid, edge, center alignment)
16
18
  - _panel_drag.py: Panel drag-to-move (click+drag on empty panel area)
19
+ - _panel_resize.py: Panel divider drag-to-resize
17
20
  - _legend_drag.py: Legend drag-to-move (click+drag on legend)
18
21
  - _panel_position.py: Panel position editing (left, bottom, width, height)
22
+ - _multi_select.py: Multi-selection with Ctrl+Click
19
23
  - _overlays.py: Measurement overlays (ruler, grid, columns)
24
+ - _region_select.py: Region/marquee selection by dragging rectangle
20
25
  - _selection.py: Selection drawing and property sync
21
26
  - _tabs.py: Tab navigation (Figure/Axis/Element)
22
27
  - _view_mode.py: View mode management (all/selected)
23
28
  - _zoom.py: Zoom/pan functionality
29
+ - _undo_redo.py: Undo/redo history (Ctrl+Z, Ctrl+Shift+Z)
24
30
  """
25
31
 
32
+ from ._accordion import SCRIPTS_ACCORDION
33
+ from ._annotation_drag import SCRIPTS_ANNOTATION_DRAG
26
34
  from ._api import SCRIPTS_API
35
+ from ._canvas_context_menu import JS_CANVAS_CONTEXT_MENU
36
+ from ._captions import SCRIPTS_CAPTIONS
27
37
  from ._colors import SCRIPTS_COLORS
28
38
  from ._core import SCRIPTS_CORE
39
+ from ._datatable import SCRIPTS_DATATABLE
29
40
  from ._debug_snapshot import SCRIPTS_DEBUG_SNAPSHOT
30
41
  from ._element_editor import SCRIPTS_ELEMENT_EDITOR
31
42
  from ._files import SCRIPTS_FILES
43
+ from ._files_context_menu import JS_FILES_CONTEXT_MENU
32
44
  from ._hitmap import SCRIPTS_HITMAP
45
+ from ._image_drop import SCRIPTS_IMAGE_DROP
33
46
  from ._inspector import SCRIPTS_INSPECTOR
34
47
  from ._labels import SCRIPTS_LABELS
35
48
  from ._legend_drag import SCRIPTS_LEGEND_DRAG
36
49
  from ._modals import SCRIPTS_MODALS
50
+ from ._multi_select import SCRIPTS_MULTI_SELECT
37
51
  from ._overlays import SCRIPTS_OVERLAYS
38
52
  from ._panel_drag import SCRIPTS_PANEL_DRAG
53
+ from ._panel_drag_snapshot import SCRIPTS_PANEL_DRAG_SNAPSHOT
39
54
  from ._panel_position import SCRIPTS_PANEL_POSITION
55
+ from ._panel_resize import SCRIPTS_PANEL_RESIZE
56
+ from ._panel_snap import SCRIPTS_PANEL_SNAP
57
+ from ._region_select import SCRIPTS_REGION_SELECT
40
58
  from ._selection import SCRIPTS_SELECTION
59
+ from ._sync import SCRIPTS_SYNC
41
60
  from ._tabs import SCRIPTS_TABS
61
+ from ._undo_redo import SCRIPTS_UNDO_REDO
42
62
  from ._view_mode import SCRIPTS_VIEW_MODE
43
63
  from ._zoom import SCRIPTS_ZOOM
44
64
 
@@ -52,8 +72,11 @@ SCRIPTS = (
52
72
  + SCRIPTS_COLORS
53
73
  + SCRIPTS_HITMAP
54
74
  + SCRIPTS_SELECTION
75
+ + SCRIPTS_MULTI_SELECT
76
+ + SCRIPTS_REGION_SELECT
55
77
  + SCRIPTS_ELEMENT_EDITOR
56
78
  + SCRIPTS_LABELS
79
+ + SCRIPTS_CAPTIONS
57
80
  + SCRIPTS_API
58
81
  + SCRIPTS_MODALS
59
82
  + SCRIPTS_ZOOM
@@ -61,8 +84,19 @@ SCRIPTS = (
61
84
  + SCRIPTS_INSPECTOR
62
85
  + SCRIPTS_FILES
63
86
  + SCRIPTS_PANEL_POSITION
87
+ + SCRIPTS_PANEL_SNAP
88
+ + SCRIPTS_PANEL_DRAG_SNAPSHOT
64
89
  + SCRIPTS_PANEL_DRAG
90
+ + SCRIPTS_PANEL_RESIZE
91
+ + SCRIPTS_ACCORDION
65
92
  + SCRIPTS_LEGEND_DRAG
93
+ + SCRIPTS_ANNOTATION_DRAG
94
+ + SCRIPTS_IMAGE_DROP
95
+ + SCRIPTS_UNDO_REDO
96
+ + SCRIPTS_DATATABLE
97
+ + SCRIPTS_SYNC
98
+ + JS_CANVAS_CONTEXT_MENU
99
+ + JS_FILES_CONTEXT_MENU
66
100
  )
67
101
 
68
102
 
@@ -75,22 +109,34 @@ def get_all_scripts():
75
109
  Mapping of script name to script content.
76
110
  """
77
111
  return {
112
+ "accordion": SCRIPTS_ACCORDION,
113
+ "annotation_drag": SCRIPTS_ANNOTATION_DRAG,
78
114
  "api": SCRIPTS_API,
115
+ "captions": SCRIPTS_CAPTIONS,
79
116
  "colors": SCRIPTS_COLORS,
80
117
  "core": SCRIPTS_CORE,
118
+ "datatable": SCRIPTS_DATATABLE,
81
119
  "debug_snapshot": SCRIPTS_DEBUG_SNAPSHOT,
82
120
  "element_editor": SCRIPTS_ELEMENT_EDITOR,
83
121
  "files": SCRIPTS_FILES,
84
122
  "hitmap": SCRIPTS_HITMAP,
123
+ "image_drop": SCRIPTS_IMAGE_DROP,
85
124
  "inspector": SCRIPTS_INSPECTOR,
86
125
  "labels": SCRIPTS_LABELS,
87
126
  "legend_drag": SCRIPTS_LEGEND_DRAG,
88
127
  "modals": SCRIPTS_MODALS,
89
128
  "overlays": SCRIPTS_OVERLAYS,
129
+ "multi_select": SCRIPTS_MULTI_SELECT,
90
130
  "panel_drag": SCRIPTS_PANEL_DRAG,
131
+ "panel_drag_snapshot": SCRIPTS_PANEL_DRAG_SNAPSHOT,
91
132
  "panel_position": SCRIPTS_PANEL_POSITION,
133
+ "panel_resize": SCRIPTS_PANEL_RESIZE,
134
+ "panel_snap": SCRIPTS_PANEL_SNAP,
135
+ "region_select": SCRIPTS_REGION_SELECT,
92
136
  "selection": SCRIPTS_SELECTION,
137
+ "sync": SCRIPTS_SYNC,
93
138
  "tabs": SCRIPTS_TABS,
139
+ "undo_redo": SCRIPTS_UNDO_REDO,
94
140
  "view_mode": SCRIPTS_VIEW_MODE,
95
141
  "zoom": SCRIPTS_ZOOM,
96
142
  }
@@ -98,22 +144,34 @@ def get_all_scripts():
98
144
 
99
145
  __all__ = [
100
146
  "SCRIPTS",
147
+ "SCRIPTS_ACCORDION",
148
+ "SCRIPTS_ANNOTATION_DRAG",
101
149
  "SCRIPTS_API",
150
+ "SCRIPTS_CAPTIONS",
102
151
  "SCRIPTS_COLORS",
103
152
  "SCRIPTS_CORE",
153
+ "SCRIPTS_DATATABLE",
104
154
  "SCRIPTS_DEBUG_SNAPSHOT",
105
155
  "SCRIPTS_ELEMENT_EDITOR",
106
156
  "SCRIPTS_FILES",
107
157
  "SCRIPTS_HITMAP",
158
+ "SCRIPTS_IMAGE_DROP",
108
159
  "SCRIPTS_INSPECTOR",
109
160
  "SCRIPTS_LABELS",
110
161
  "SCRIPTS_LEGEND_DRAG",
111
162
  "SCRIPTS_MODALS",
163
+ "SCRIPTS_MULTI_SELECT",
112
164
  "SCRIPTS_OVERLAYS",
113
165
  "SCRIPTS_PANEL_DRAG",
166
+ "SCRIPTS_PANEL_DRAG_SNAPSHOT",
114
167
  "SCRIPTS_PANEL_POSITION",
168
+ "SCRIPTS_PANEL_RESIZE",
169
+ "SCRIPTS_PANEL_SNAP",
170
+ "SCRIPTS_REGION_SELECT",
115
171
  "SCRIPTS_SELECTION",
172
+ "SCRIPTS_SYNC",
116
173
  "SCRIPTS_TABS",
174
+ "SCRIPTS_UNDO_REDO",
117
175
  "SCRIPTS_VIEW_MODE",
118
176
  "SCRIPTS_ZOOM",
119
177
  "get_all_scripts",