cjm-transcript-source-select 0.0.16__tar.gz → 0.0.17__tar.gz

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 (39) hide show
  1. {cjm_transcript_source_select-0.0.16/cjm_transcript_source_select.egg-info → cjm_transcript_source_select-0.0.17}/PKG-INFO +16 -23
  2. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/README.md +15 -22
  3. cjm_transcript_source_select-0.0.17/cjm_transcript_source_select/__init__.py +1 -0
  4. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/_modidx.py +0 -2
  5. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/step_renderer.py +18 -38
  6. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17/cjm_transcript_source_select.egg-info}/PKG-INFO +16 -23
  7. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/settings.ini +1 -1
  8. cjm_transcript_source_select-0.0.16/cjm_transcript_source_select/__init__.py +0 -1
  9. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/LICENSE +0 -0
  10. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/MANIFEST.in +0 -0
  11. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/__init__.py +0 -0
  12. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/helpers.py +0 -0
  13. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/local_files.py +0 -0
  14. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/preview_panel.py +0 -0
  15. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/selection_queue.py +0 -0
  16. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/components/source_browser.py +0 -0
  17. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/html_ids.py +0 -0
  18. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/models.py +0 -0
  19. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/__init__.py +0 -0
  20. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/core.py +0 -0
  21. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/filtering.py +0 -0
  22. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/init.py +0 -0
  23. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/local_files.py +0 -0
  24. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/queue.py +0 -0
  25. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/source_browser.py +0 -0
  26. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/routes/tabs.py +0 -0
  27. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/services/__init__.py +0 -0
  28. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/services/source.py +0 -0
  29. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/services/source_utils.py +0 -0
  30. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select/utils.py +0 -0
  31. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/SOURCES.txt +0 -0
  32. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/dependency_links.txt +0 -0
  33. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/entry_points.txt +0 -0
  34. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/not-zip-safe +0 -0
  35. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/requires.txt +0 -0
  36. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/cjm_transcript_source_select.egg-info/top_level.txt +0 -0
  37. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/pyproject.toml +0 -0
  38. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/setup.cfg +0 -0
  39. {cjm_transcript_source_select-0.0.16 → cjm_transcript_source_select-0.0.17}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cjm-transcript-source-select
3
- Version: 0.0.16
3
+ Version: 0.0.17
4
4
  Summary: FastHTML source selection component for transcript decomposition workflows, with federated database browsing, drag-drop ordering, and keyboard navigation.
5
5
  Home-page: https://github.com/cj-mills/cjm-transcript-source-select
6
6
  Author: Christian J. Mills
@@ -109,54 +109,54 @@ graph LR
109
109
  components_local_files --> html_ids
110
110
  components_local_files --> components_helpers
111
111
  components_preview_panel --> html_ids
112
- components_source_browser --> services_source_utils
113
112
  components_source_browser --> utils
113
+ components_source_browser --> services_source_utils
114
114
  components_source_browser --> html_ids
115
- components_step_renderer --> components_source_browser
116
115
  components_step_renderer --> html_ids
117
- components_step_renderer --> utils
116
+ components_step_renderer --> components_source_browser
117
+ components_step_renderer --> components_local_files
118
118
  components_step_renderer --> components_selection_queue
119
119
  components_step_renderer --> models
120
120
  components_step_renderer --> components_preview_panel
121
- components_step_renderer --> components_local_files
121
+ components_step_renderer --> utils
122
122
  routes_core --> components_step_renderer
123
123
  routes_core --> models
124
- routes_core --> html_ids
125
124
  routes_core --> components_selection_queue
126
125
  routes_core --> services_source
127
- routes_filtering --> routes_core
126
+ routes_core --> html_ids
128
127
  routes_filtering --> services_source_utils
128
+ routes_filtering --> routes_core
129
129
  routes_filtering --> models
130
130
  routes_filtering --> services_source
131
131
  routes_init --> routes_queue
132
132
  routes_init --> routes_core
133
- routes_init --> models
134
- routes_init --> routes_filtering
135
133
  routes_init --> routes_tabs
134
+ routes_init --> routes_local_files
135
+ routes_init --> models
136
136
  routes_init --> services_source
137
137
  routes_init --> routes_source_browser
138
- routes_init --> routes_local_files
138
+ routes_init --> routes_filtering
139
139
  routes_local_files --> components_local_files
140
- routes_local_files --> routes_core
141
- routes_local_files --> services_source
142
140
  routes_local_files --> models
143
- routes_queue --> routes_core
141
+ routes_local_files --> services_source
142
+ routes_local_files --> routes_core
144
143
  routes_queue --> services_source_utils
144
+ routes_queue --> routes_core
145
145
  routes_queue --> models
146
146
  routes_queue --> components_preview_panel
147
147
  routes_queue --> services_source
148
- routes_source_browser --> routes_core
149
148
  routes_source_browser --> html_ids
150
- routes_source_browser --> models
151
149
  routes_source_browser --> components_source_browser
150
+ routes_source_browser --> routes_core
151
+ routes_source_browser --> models
152
152
  routes_source_browser --> components_preview_panel
153
153
  routes_source_browser --> services_source
154
154
  routes_source_browser --> services_source_utils
155
155
  routes_tabs --> routes_core
156
- routes_tabs --> services_source_utils
157
156
  routes_tabs --> models
158
157
  routes_tabs --> components_step_renderer
159
158
  routes_tabs --> services_source
159
+ routes_tabs --> services_source_utils
160
160
  ```
161
161
 
162
162
  *52 cross-module dependencies detected*
@@ -1394,13 +1394,6 @@ def _create_parent_keyboard_manager() -> ZoneManager: # Parent keyboard manager
1394
1394
  "Create the parent keyboard manager with two ghost zones for column switching."
1395
1395
  ```
1396
1396
 
1397
- ``` python
1398
- def _render_selection_keyboard_hints(
1399
- manager: ZoneManager, # Keyboard zone manager with actions configured
1400
- ) -> Any: # Collapsible keyboard hints component
1401
- "Render keyboard shortcut hints in a collapsible container."
1402
- ```
1403
-
1404
1397
  ``` python
1405
1398
  def _render_selection_stats(
1406
1399
  selected_sources: List[Dict[str, str]], # Selected sources
@@ -63,54 +63,54 @@ graph LR
63
63
  components_local_files --> html_ids
64
64
  components_local_files --> components_helpers
65
65
  components_preview_panel --> html_ids
66
- components_source_browser --> services_source_utils
67
66
  components_source_browser --> utils
67
+ components_source_browser --> services_source_utils
68
68
  components_source_browser --> html_ids
69
- components_step_renderer --> components_source_browser
70
69
  components_step_renderer --> html_ids
71
- components_step_renderer --> utils
70
+ components_step_renderer --> components_source_browser
71
+ components_step_renderer --> components_local_files
72
72
  components_step_renderer --> components_selection_queue
73
73
  components_step_renderer --> models
74
74
  components_step_renderer --> components_preview_panel
75
- components_step_renderer --> components_local_files
75
+ components_step_renderer --> utils
76
76
  routes_core --> components_step_renderer
77
77
  routes_core --> models
78
- routes_core --> html_ids
79
78
  routes_core --> components_selection_queue
80
79
  routes_core --> services_source
81
- routes_filtering --> routes_core
80
+ routes_core --> html_ids
82
81
  routes_filtering --> services_source_utils
82
+ routes_filtering --> routes_core
83
83
  routes_filtering --> models
84
84
  routes_filtering --> services_source
85
85
  routes_init --> routes_queue
86
86
  routes_init --> routes_core
87
- routes_init --> models
88
- routes_init --> routes_filtering
89
87
  routes_init --> routes_tabs
88
+ routes_init --> routes_local_files
89
+ routes_init --> models
90
90
  routes_init --> services_source
91
91
  routes_init --> routes_source_browser
92
- routes_init --> routes_local_files
92
+ routes_init --> routes_filtering
93
93
  routes_local_files --> components_local_files
94
- routes_local_files --> routes_core
95
- routes_local_files --> services_source
96
94
  routes_local_files --> models
97
- routes_queue --> routes_core
95
+ routes_local_files --> services_source
96
+ routes_local_files --> routes_core
98
97
  routes_queue --> services_source_utils
98
+ routes_queue --> routes_core
99
99
  routes_queue --> models
100
100
  routes_queue --> components_preview_panel
101
101
  routes_queue --> services_source
102
- routes_source_browser --> routes_core
103
102
  routes_source_browser --> html_ids
104
- routes_source_browser --> models
105
103
  routes_source_browser --> components_source_browser
104
+ routes_source_browser --> routes_core
105
+ routes_source_browser --> models
106
106
  routes_source_browser --> components_preview_panel
107
107
  routes_source_browser --> services_source
108
108
  routes_source_browser --> services_source_utils
109
109
  routes_tabs --> routes_core
110
- routes_tabs --> services_source_utils
111
110
  routes_tabs --> models
112
111
  routes_tabs --> components_step_renderer
113
112
  routes_tabs --> services_source
113
+ routes_tabs --> services_source_utils
114
114
  ```
115
115
 
116
116
  *52 cross-module dependencies detected*
@@ -1348,13 +1348,6 @@ def _create_parent_keyboard_manager() -> ZoneManager: # Parent keyboard manager
1348
1348
  "Create the parent keyboard manager with two ghost zones for column switching."
1349
1349
  ```
1350
1350
 
1351
- ``` python
1352
- def _render_selection_keyboard_hints(
1353
- manager: ZoneManager, # Keyboard zone manager with actions configured
1354
- ) -> Any: # Collapsible keyboard hints component
1355
- "Render keyboard shortcut hints in a collapsible container."
1356
- ```
1357
-
1358
1351
  ``` python
1359
1352
  def _render_selection_stats(
1360
1353
  selected_sources: List[Dict[str, str]], # Selected sources
@@ -0,0 +1 @@
1
+ __version__ = "0.0.17"
@@ -59,8 +59,6 @@ d = { 'settings': { 'branch': 'main',
59
59
  'cjm_transcript_source_select/components/step_renderer.py'),
60
60
  'cjm_transcript_source_select.components.step_renderer._render_selection_footer': ( 'components/step_renderer.html#_render_selection_footer',
61
61
  'cjm_transcript_source_select/components/step_renderer.py'),
62
- 'cjm_transcript_source_select.components.step_renderer._render_selection_keyboard_hints': ( 'components/step_renderer.html#_render_selection_keyboard_hints',
63
- 'cjm_transcript_source_select/components/step_renderer.py'),
64
62
  'cjm_transcript_source_select.components.step_renderer._render_selection_stats': ( 'components/step_renderer.html#_render_selection_stats',
65
63
  'cjm_transcript_source_select/components/step_renderer.py'),
66
64
  'cjm_transcript_source_select.components.step_renderer._render_source_tabs': ( 'components/step_renderer.html#_render_source_tabs',
@@ -9,14 +9,11 @@ __all__ = ['SD_TAB_PREV_BTN', 'SD_TAB_NEXT_BTN', 'SD_PREVIEW_BTN', 'FB_SYSTEM_ID
9
9
  from typing import Any, Callable, Dict, List, Optional
10
10
 
11
11
  from fasthtml.common import (
12
- Div, H2, P, Span, Input, Script, Details, Summary
12
+ Div, H2, P, Span, Input, Script
13
13
  )
14
14
 
15
15
  # DaisyUI components
16
16
  from cjm_fasthtml_daisyui.components.data_display.badge import badge, badge_colors, badge_sizes
17
- from cjm_fasthtml_daisyui.components.data_display.collapse import (
18
- collapse, collapse_title, collapse_content, collapse_modifiers
19
- )
20
17
  from cjm_fasthtml_daisyui.components.navigation.tabs import tabs, tabs_styles, tab
21
18
  from cjm_fasthtml_daisyui.utilities.semantic_colors import bg_dui, text_dui, border_dui, ring_dui, shadow_dui
22
19
  from cjm_fasthtml_daisyui.utilities.border_radius import border_radius
@@ -49,7 +46,7 @@ from cjm_fasthtml_keyboard_navigation.core.actions import KeyAction
49
46
  from cjm_fasthtml_keyboard_navigation.core.manager import ZoneManager
50
47
  from cjm_fasthtml_keyboard_navigation.core.navigation import ScrollOnly
51
48
  from cjm_fasthtml_keyboard_navigation.components.system import render_keyboard_system
52
- from cjm_fasthtml_keyboard_navigation.components.hints import render_keyboard_hints
49
+ from cjm_fasthtml_keyboard_navigation.components.hints_modal import render_keyboard_hints_modal
53
50
 
54
51
  # Source browser system ID (for hierarchy wiring)
55
52
  from .source_browser import SB_SYSTEM_ID
@@ -148,32 +145,6 @@ def _create_parent_keyboard_manager() -> ZoneManager: # Parent keyboard manager
148
145
  state_hidden_inputs=True,
149
146
  )
150
147
 
151
- # %% ../../nbs/components/step_renderer.ipynb #52i7b5ddglt
152
- def _render_selection_keyboard_hints(
153
- manager: ZoneManager, # Keyboard zone manager with actions configured
154
- ) -> Any: # Collapsible keyboard hints component
155
- """Render keyboard shortcut hints in a collapsible container."""
156
- hints = render_keyboard_hints(
157
- manager,
158
- include_navigation=True,
159
- include_zone_switch=True,
160
- badge_style="outline",
161
- container_id="sd-keyboard-hints",
162
- use_icons=False
163
- )
164
-
165
- return Details(
166
- Summary(
167
- "Keyboard Shortcuts",
168
- cls=combine_classes(collapse_title, font_size.sm, font_weight.medium)
169
- ),
170
- Div(
171
- hints,
172
- cls=collapse_content
173
- ),
174
- cls=combine_classes(collapse, collapse_modifiers.arrow, bg_dui.base_200)
175
- )
176
-
177
148
  # %% ../../nbs/components/step_renderer.ipynb #8d397d19
178
149
  def _render_selection_stats(
179
150
  selected_sources: List[Dict[str, str]], # Selected sources
@@ -499,16 +470,21 @@ def render_selection_step(
499
470
  # Hierarchy wiring script (must come after all keyboard systems are rendered)
500
471
  hierarchy_js = _generate_hierarchy_js(active_tab)
501
472
 
473
+ # Keyboard hints modal
474
+ hints_modal, hints_trigger, hints_script = render_keyboard_hints_modal(kb_manager)
475
+
502
476
  return Div(
503
- # Header with keyboard hints
477
+ # Header with keyboard hints trigger
504
478
  Div(
505
- H2("Select Source Material", cls=combine_classes(font_size._3xl, font_weight.bold)),
506
- P(
507
- "Choose transcription sources to decompose into a structural spine.",
508
- cls=combine_classes(text_dui.base_content.opacity(70), m.b(4))
479
+ Div(
480
+ H2("Select Source Material", cls=combine_classes(font_size._3xl, font_weight.bold)),
481
+ P(
482
+ "Choose transcription sources to decompose into a structural spine.",
483
+ cls=combine_classes(text_dui.base_content.opacity(70), m.b(4))
484
+ ),
509
485
  ),
510
- _render_selection_keyboard_hints(kb_manager),
511
- cls=combine_classes(m.b(4))
486
+ hints_trigger,
487
+ cls=combine_classes(flex_display, items.start, justify.between, m.b(4))
512
488
  ),
513
489
 
514
490
  # Main content area (two columns: tabs + queue)
@@ -571,6 +547,10 @@ def render_selection_step(
571
547
  # Script runner for OOB-triggered JS (duplicate rejection flash)
572
548
  Div(id=SelectionHtmlIds.SCRIPT_RUNNER),
573
549
 
550
+ # Keyboard hints modal + ? key listener
551
+ hints_modal,
552
+ hints_script,
553
+
574
554
  id=SelectionHtmlIds.SOURCE_SELECTOR,
575
555
  cls=combine_classes(
576
556
  w.full,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cjm-transcript-source-select
3
- Version: 0.0.16
3
+ Version: 0.0.17
4
4
  Summary: FastHTML source selection component for transcript decomposition workflows, with federated database browsing, drag-drop ordering, and keyboard navigation.
5
5
  Home-page: https://github.com/cj-mills/cjm-transcript-source-select
6
6
  Author: Christian J. Mills
@@ -109,54 +109,54 @@ graph LR
109
109
  components_local_files --> html_ids
110
110
  components_local_files --> components_helpers
111
111
  components_preview_panel --> html_ids
112
- components_source_browser --> services_source_utils
113
112
  components_source_browser --> utils
113
+ components_source_browser --> services_source_utils
114
114
  components_source_browser --> html_ids
115
- components_step_renderer --> components_source_browser
116
115
  components_step_renderer --> html_ids
117
- components_step_renderer --> utils
116
+ components_step_renderer --> components_source_browser
117
+ components_step_renderer --> components_local_files
118
118
  components_step_renderer --> components_selection_queue
119
119
  components_step_renderer --> models
120
120
  components_step_renderer --> components_preview_panel
121
- components_step_renderer --> components_local_files
121
+ components_step_renderer --> utils
122
122
  routes_core --> components_step_renderer
123
123
  routes_core --> models
124
- routes_core --> html_ids
125
124
  routes_core --> components_selection_queue
126
125
  routes_core --> services_source
127
- routes_filtering --> routes_core
126
+ routes_core --> html_ids
128
127
  routes_filtering --> services_source_utils
128
+ routes_filtering --> routes_core
129
129
  routes_filtering --> models
130
130
  routes_filtering --> services_source
131
131
  routes_init --> routes_queue
132
132
  routes_init --> routes_core
133
- routes_init --> models
134
- routes_init --> routes_filtering
135
133
  routes_init --> routes_tabs
134
+ routes_init --> routes_local_files
135
+ routes_init --> models
136
136
  routes_init --> services_source
137
137
  routes_init --> routes_source_browser
138
- routes_init --> routes_local_files
138
+ routes_init --> routes_filtering
139
139
  routes_local_files --> components_local_files
140
- routes_local_files --> routes_core
141
- routes_local_files --> services_source
142
140
  routes_local_files --> models
143
- routes_queue --> routes_core
141
+ routes_local_files --> services_source
142
+ routes_local_files --> routes_core
144
143
  routes_queue --> services_source_utils
144
+ routes_queue --> routes_core
145
145
  routes_queue --> models
146
146
  routes_queue --> components_preview_panel
147
147
  routes_queue --> services_source
148
- routes_source_browser --> routes_core
149
148
  routes_source_browser --> html_ids
150
- routes_source_browser --> models
151
149
  routes_source_browser --> components_source_browser
150
+ routes_source_browser --> routes_core
151
+ routes_source_browser --> models
152
152
  routes_source_browser --> components_preview_panel
153
153
  routes_source_browser --> services_source
154
154
  routes_source_browser --> services_source_utils
155
155
  routes_tabs --> routes_core
156
- routes_tabs --> services_source_utils
157
156
  routes_tabs --> models
158
157
  routes_tabs --> components_step_renderer
159
158
  routes_tabs --> services_source
159
+ routes_tabs --> services_source_utils
160
160
  ```
161
161
 
162
162
  *52 cross-module dependencies detected*
@@ -1394,13 +1394,6 @@ def _create_parent_keyboard_manager() -> ZoneManager: # Parent keyboard manager
1394
1394
  "Create the parent keyboard manager with two ghost zones for column switching."
1395
1395
  ```
1396
1396
 
1397
- ``` python
1398
- def _render_selection_keyboard_hints(
1399
- manager: ZoneManager, # Keyboard zone manager with actions configured
1400
- ) -> Any: # Collapsible keyboard hints component
1401
- "Render keyboard shortcut hints in a collapsible container."
1402
- ```
1403
-
1404
1397
  ``` python
1405
1398
  def _render_selection_stats(
1406
1399
  selected_sources: List[Dict[str, str]], # Selected sources
@@ -1,7 +1,7 @@
1
1
  [DEFAULT]
2
2
  repo = cjm-transcript-source-select
3
3
  lib_name = cjm-transcript-source-select
4
- version = 0.0.16
4
+ version = 0.0.17
5
5
  min_python = 3.12
6
6
  license = apache2
7
7
  black_formatting = False
@@ -1 +0,0 @@
1
- __version__ = "0.0.16"