cjm-transcript-source-select 0.0.32__tar.gz → 0.0.34__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 (37) hide show
  1. {cjm_transcript_source_select-0.0.32/cjm_transcript_source_select.egg-info → cjm_transcript_source_select-0.0.34}/PKG-INFO +27 -38
  2. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/README.md +18 -29
  3. cjm_transcript_source_select-0.0.34/cjm_transcript_source_select/__init__.py +1 -0
  4. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/_modidx.py +1 -5
  5. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/selection_queue.py +8 -9
  6. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/source_browser.py +9 -16
  7. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/source_browser.py +1 -1
  8. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34/cjm_transcript_source_select.egg-info}/PKG-INFO +27 -38
  9. cjm_transcript_source_select-0.0.34/cjm_transcript_source_select.egg-info/requires.txt +17 -0
  10. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/pyproject.toml +1 -1
  11. cjm_transcript_source_select-0.0.32/cjm_transcript_source_select/__init__.py +0 -1
  12. cjm_transcript_source_select-0.0.32/cjm_transcript_source_select.egg-info/requires.txt +0 -17
  13. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/LICENSE +0 -0
  14. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/MANIFEST.in +0 -0
  15. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/__init__.py +0 -0
  16. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/helpers.py +0 -0
  17. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/local_files.py +0 -0
  18. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/preview_panel.py +0 -0
  19. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/step_renderer.py +0 -0
  20. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/html_ids.py +0 -0
  21. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/models.py +0 -0
  22. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/__init__.py +0 -0
  23. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/core.py +0 -0
  24. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/filtering.py +0 -0
  25. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/init.py +0 -0
  26. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/local_files.py +0 -0
  27. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/queue.py +0 -0
  28. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/tabs.py +0 -0
  29. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/__init__.py +0 -0
  30. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/source.py +0 -0
  31. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/source_utils.py +0 -0
  32. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/utils.py +0 -0
  33. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select.egg-info/SOURCES.txt +0 -0
  34. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select.egg-info/dependency_links.txt +0 -0
  35. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select.egg-info/entry_points.txt +0 -0
  36. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select.egg-info/top_level.txt +0 -0
  37. {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cjm-transcript-source-select
3
- Version: 0.0.32
3
+ Version: 0.0.34
4
4
  Summary: FastHTML source selection component for transcript decomposition workflows, with federated database browsing, drag-drop ordering, and keyboard navigation.
5
5
  Author-email: "Christian J. Mills" <9126128+cj-mills@users.noreply.github.com>
6
6
  License: Apache-2.0
@@ -18,20 +18,20 @@ License-File: LICENSE
18
18
  Requires-Dist: python-fasthtml
19
19
  Requires-Dist: cjm-plugin-system>=0.0.30
20
20
  Requires-Dist: cjm-transcription-plugin-system>=0.0.15
21
- Requires-Dist: cjm-fasthtml-app-core>=0.0.19
21
+ Requires-Dist: cjm-fasthtml-app-core>=0.0.20
22
22
  Requires-Dist: cjm-fasthtml-daisyui>=0.0.15
23
23
  Requires-Dist: cjm_fasthtml_lucide_icons>=0.0.1
24
- Requires-Dist: cjm_fasthtml_file_browser>=0.0.21
25
- Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.25
24
+ Requires-Dist: cjm_fasthtml_file_browser>=0.0.23
25
+ Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.26
26
26
  Requires-Dist: duckdb
27
27
  Requires-Dist: pandas
28
28
  Requires-Dist: cjm_workflow_state>=0.0.3
29
29
  Requires-Dist: cjm_source_provider>=0.0.1
30
- Requires-Dist: cjm_fasthtml_interactions>=0.0.36
31
- Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.14
32
- Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.23
33
- Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.18
34
- Requires-Dist: cjm_fasthtml_design_system>=0.0.11
30
+ Requires-Dist: cjm_fasthtml_interactions>=0.0.37
31
+ Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.15
32
+ Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.26
33
+ Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.19
34
+ Requires-Dist: cjm_fasthtml_design_system>=0.0.12
35
35
  Dynamic: license-file
36
36
 
37
37
  # cjm-transcript-source-select
@@ -96,57 +96,57 @@ graph LR
96
96
  utils[utils<br/>utils]
97
97
 
98
98
  components_helpers --> models
99
- components_local_files --> html_ids
100
99
  components_local_files --> components_helpers
100
+ components_local_files --> html_ids
101
101
  components_preview_panel --> html_ids
102
102
  components_source_browser --> services_source_utils
103
- components_source_browser --> html_ids
104
103
  components_source_browser --> utils
104
+ components_source_browser --> html_ids
105
+ components_step_renderer --> utils
105
106
  components_step_renderer --> components_selection_queue
106
- components_step_renderer --> html_ids
107
- components_step_renderer --> models
108
107
  components_step_renderer --> components_local_files
109
108
  components_step_renderer --> components_source_browser
109
+ components_step_renderer --> models
110
110
  components_step_renderer --> components_preview_panel
111
- components_step_renderer --> utils
111
+ components_step_renderer --> html_ids
112
112
  routes_core --> models
113
- routes_core --> html_ids
114
- routes_core --> components_step_renderer
115
113
  routes_core --> services_source
116
114
  routes_core --> components_selection_queue
117
- routes_filtering --> services_source_utils
118
- routes_filtering --> services_source
115
+ routes_core --> components_step_renderer
116
+ routes_core --> html_ids
119
117
  routes_filtering --> routes_core
118
+ routes_filtering --> services_source
119
+ routes_filtering --> services_source_utils
120
120
  routes_filtering --> models
121
121
  routes_init --> routes_core
122
- routes_init --> services_source
123
- routes_init --> routes_local_files
122
+ routes_init --> routes_filtering
124
123
  routes_init --> routes_queue
124
+ routes_init --> services_source
125
125
  routes_init --> routes_tabs
126
+ routes_init --> routes_local_files
126
127
  routes_init --> models
127
- routes_init --> routes_filtering
128
128
  routes_init --> routes_source_browser
129
129
  routes_local_files --> components_local_files
130
- routes_local_files --> services_source
131
130
  routes_local_files --> routes_core
132
131
  routes_local_files --> models
132
+ routes_local_files --> services_source
133
+ routes_queue --> routes_core
133
134
  routes_queue --> services_source
134
135
  routes_queue --> services_source_utils
135
- routes_queue --> routes_core
136
136
  routes_queue --> models
137
137
  routes_queue --> components_preview_panel
138
- routes_source_browser --> services_source
139
138
  routes_source_browser --> components_source_browser
139
+ routes_source_browser --> services_source
140
+ routes_source_browser --> services_source_utils
140
141
  routes_source_browser --> html_ids
141
142
  routes_source_browser --> models
142
- routes_source_browser --> services_source_utils
143
143
  routes_source_browser --> routes_core
144
144
  routes_source_browser --> components_preview_panel
145
145
  routes_tabs --> models
146
+ routes_tabs --> components_step_renderer
146
147
  routes_tabs --> routes_core
147
- routes_tabs --> services_source
148
148
  routes_tabs --> services_source_utils
149
- routes_tabs --> components_step_renderer
149
+ routes_tabs --> services_source
150
150
  ```
151
151
 
152
152
  *52 cross-module dependencies detected*
@@ -786,11 +786,6 @@ def _render_queue_content(
786
786
  "Render the job ID display as custom content for each queue item."
787
787
  ```
788
788
 
789
- ``` python
790
- def _render_queue_empty() -> Any: # Empty state element
791
- "Render the custom empty state for the source selection queue."
792
- ```
793
-
794
789
  ``` python
795
790
  def _render_selection_queue(
796
791
  selected_sources: List[Dict[str, str]], # List of selected sources in order
@@ -1063,7 +1058,6 @@ from cjm_transcript_source_select.components.source_browser import (
1063
1058
  build_source_items,
1064
1059
  is_source_item_skippable,
1065
1060
  create_source_cell_renderer,
1066
- render_source_empty,
1067
1061
  build_source_browser_keyboard_system
1068
1062
  )
1069
1063
  ```
@@ -1120,11 +1114,6 @@ def create_source_cell_renderer(
1120
1114
  "Create a render_cell callback for the source browser virtual collection."
1121
1115
  ```
1122
1116
 
1123
- ``` python
1124
- def render_source_empty() -> Any: # Empty state component
1125
- "Render empty state when no transcription sources are available."
1126
- ```
1127
-
1128
1117
  ``` python
1129
1118
  def build_source_browser_keyboard_system(
1130
1119
  sb_state: Any, # SourceBrowserRouterState (carries vc_ids, vc_btn_ids, vc_urls)
@@ -60,57 +60,57 @@ graph LR
60
60
  utils[utils<br/>utils]
61
61
 
62
62
  components_helpers --> models
63
- components_local_files --> html_ids
64
63
  components_local_files --> components_helpers
64
+ components_local_files --> html_ids
65
65
  components_preview_panel --> html_ids
66
66
  components_source_browser --> services_source_utils
67
- components_source_browser --> html_ids
68
67
  components_source_browser --> utils
68
+ components_source_browser --> html_ids
69
+ components_step_renderer --> utils
69
70
  components_step_renderer --> components_selection_queue
70
- components_step_renderer --> html_ids
71
- components_step_renderer --> models
72
71
  components_step_renderer --> components_local_files
73
72
  components_step_renderer --> components_source_browser
73
+ components_step_renderer --> models
74
74
  components_step_renderer --> components_preview_panel
75
- components_step_renderer --> utils
75
+ components_step_renderer --> html_ids
76
76
  routes_core --> models
77
- routes_core --> html_ids
78
- routes_core --> components_step_renderer
79
77
  routes_core --> services_source
80
78
  routes_core --> components_selection_queue
81
- routes_filtering --> services_source_utils
82
- routes_filtering --> services_source
79
+ routes_core --> components_step_renderer
80
+ routes_core --> html_ids
83
81
  routes_filtering --> routes_core
82
+ routes_filtering --> services_source
83
+ routes_filtering --> services_source_utils
84
84
  routes_filtering --> models
85
85
  routes_init --> routes_core
86
- routes_init --> services_source
87
- routes_init --> routes_local_files
86
+ routes_init --> routes_filtering
88
87
  routes_init --> routes_queue
88
+ routes_init --> services_source
89
89
  routes_init --> routes_tabs
90
+ routes_init --> routes_local_files
90
91
  routes_init --> models
91
- routes_init --> routes_filtering
92
92
  routes_init --> routes_source_browser
93
93
  routes_local_files --> components_local_files
94
- routes_local_files --> services_source
95
94
  routes_local_files --> routes_core
96
95
  routes_local_files --> models
96
+ routes_local_files --> services_source
97
+ routes_queue --> routes_core
97
98
  routes_queue --> services_source
98
99
  routes_queue --> services_source_utils
99
- routes_queue --> routes_core
100
100
  routes_queue --> models
101
101
  routes_queue --> components_preview_panel
102
- routes_source_browser --> services_source
103
102
  routes_source_browser --> components_source_browser
103
+ routes_source_browser --> services_source
104
+ routes_source_browser --> services_source_utils
104
105
  routes_source_browser --> html_ids
105
106
  routes_source_browser --> models
106
- routes_source_browser --> services_source_utils
107
107
  routes_source_browser --> routes_core
108
108
  routes_source_browser --> components_preview_panel
109
109
  routes_tabs --> models
110
+ routes_tabs --> components_step_renderer
110
111
  routes_tabs --> routes_core
111
- routes_tabs --> services_source
112
112
  routes_tabs --> services_source_utils
113
- routes_tabs --> components_step_renderer
113
+ routes_tabs --> services_source
114
114
  ```
115
115
 
116
116
  *52 cross-module dependencies detected*
@@ -750,11 +750,6 @@ def _render_queue_content(
750
750
  "Render the job ID display as custom content for each queue item."
751
751
  ```
752
752
 
753
- ``` python
754
- def _render_queue_empty() -> Any: # Empty state element
755
- "Render the custom empty state for the source selection queue."
756
- ```
757
-
758
753
  ``` python
759
754
  def _render_selection_queue(
760
755
  selected_sources: List[Dict[str, str]], # List of selected sources in order
@@ -1027,7 +1022,6 @@ from cjm_transcript_source_select.components.source_browser import (
1027
1022
  build_source_items,
1028
1023
  is_source_item_skippable,
1029
1024
  create_source_cell_renderer,
1030
- render_source_empty,
1031
1025
  build_source_browser_keyboard_system
1032
1026
  )
1033
1027
  ```
@@ -1084,11 +1078,6 @@ def create_source_cell_renderer(
1084
1078
  "Create a render_cell callback for the source browser virtual collection."
1085
1079
  ```
1086
1080
 
1087
- ``` python
1088
- def render_source_empty() -> Any: # Empty state component
1089
- "Render empty state when no transcription sources are available."
1090
- ```
1091
-
1092
1081
  ``` python
1093
1082
  def build_source_browser_keyboard_system(
1094
1083
  sb_state: Any, # SourceBrowserRouterState (carries vc_ids, vc_btn_ids, vc_urls)
@@ -0,0 +1 @@
1
+ __version__ = "0.0.34"
@@ -29,8 +29,6 @@ d = { 'settings': { 'branch': 'main',
29
29
  'cjm_transcript_source_select/components/preview_panel.py')},
30
30
  'cjm_transcript_source_select.components.selection_queue': { 'cjm_transcript_source_select.components.selection_queue._render_queue_content': ( 'components/selection_queue.html#_render_queue_content',
31
31
  'cjm_transcript_source_select/components/selection_queue.py'),
32
- 'cjm_transcript_source_select.components.selection_queue._render_queue_empty': ( 'components/selection_queue.html#_render_queue_empty',
33
- 'cjm_transcript_source_select/components/selection_queue.py'),
34
32
  'cjm_transcript_source_select.components.selection_queue._render_selection_queue': ( 'components/selection_queue.html#_render_selection_queue',
35
33
  'cjm_transcript_source_select/components/selection_queue.py')},
36
34
  'cjm_transcript_source_select.components.source_browser': { 'cjm_transcript_source_select.components.source_browser.SourceBrowserItem': ( 'components/source_browser.html#sourcebrowseritem',
@@ -52,9 +50,7 @@ d = { 'settings': { 'branch': 'main',
52
50
  'cjm_transcript_source_select.components.source_browser.create_source_cell_renderer': ( 'components/source_browser.html#create_source_cell_renderer',
53
51
  'cjm_transcript_source_select/components/source_browser.py'),
54
52
  'cjm_transcript_source_select.components.source_browser.is_source_item_skippable': ( 'components/source_browser.html#is_source_item_skippable',
55
- 'cjm_transcript_source_select/components/source_browser.py'),
56
- 'cjm_transcript_source_select.components.source_browser.render_source_empty': ( 'components/source_browser.html#render_source_empty',
57
- 'cjm_transcript_source_select/components/source_browser.py')},
53
+ 'cjm_transcript_source_select/components/source_browser.py')},
58
54
  'cjm_transcript_source_select.components.step_renderer': { 'cjm_transcript_source_select.components.step_renderer._create_parent_keyboard_manager': ( 'components/step_renderer.html#_create_parent_keyboard_manager',
59
55
  'cjm_transcript_source_select/components/step_renderer.py'),
60
56
  'cjm_transcript_source_select.components.step_renderer._generate_hierarchy_js': ( 'components/step_renderer.html#_generate_hierarchy_js',
@@ -23,6 +23,9 @@ from cjm_fasthtml_daisyui.utilities.semantic_colors import text_dui
23
23
 
24
24
  from cjm_fasthtml_design_system.text_tiers import text_tiers
25
25
 
26
+ # App core: V8 empty-state recipe
27
+ from cjm_fasthtml_app_core.components.empty_state import render_empty_state
28
+
26
29
  from cjm_fasthtml_sortable_queue.config import SortableQueueConfig
27
30
  from cjm_fasthtml_sortable_queue.html_ids import SortableQueueHtmlIds
28
31
  from cjm_fasthtml_sortable_queue.models import SortableQueueUrls
@@ -51,14 +54,6 @@ def _render_queue_content(
51
54
  title=record_id
52
55
  )
53
56
 
54
- # %% ../../nbs/components/selection_queue.ipynb #nqlb881btw
55
- def _render_queue_empty() -> Any: # Empty state element
56
- """Render the custom empty state for the source selection queue."""
57
- return P(
58
- "Select transcriptions from the browser",
59
- cls=combine_classes(text_tiers.muted, text_align.center, font_size.md, p(4))
60
- )
61
-
62
57
  # %% ../../nbs/components/selection_queue.ipynb #17uipzddaut
63
58
  def _render_selection_queue(
64
59
  selected_sources: List[Dict[str, str]], # List of selected sources in order
@@ -74,7 +69,11 @@ def _render_selection_queue(
74
69
  urls=urls,
75
70
  queue_items=selected_sources,
76
71
  render_content=_render_queue_content,
77
- render_empty=_render_queue_empty,
72
+ render_empty=lambda: render_empty_state(
73
+ message="No transcriptions selected",
74
+ detail="Select transcriptions from the browser to add them to the queue.",
75
+ icon_name="list",
76
+ ),
78
77
  extra_item_attrs=lambda item: {
79
78
  "data_record_id": item.get("record_id", ""),
80
79
  "data_provider_id": item.get("provider_id", ""),
@@ -4,7 +4,7 @@
4
4
 
5
5
  # %% auto #0
6
6
  __all__ = ['SOURCE_BROWSER_COLUMNS', 'SB_SYSTEM_ID', 'SourceBrowserItem', 'build_source_items', 'is_source_item_skippable',
7
- 'create_source_cell_renderer', 'render_source_empty', 'build_source_browser_keyboard_system']
7
+ 'create_source_cell_renderer', 'build_source_browser_keyboard_system']
8
8
 
9
9
  # %% ../../nbs/components/source_browser.ipynb #7b2e89c5
10
10
  import json
@@ -40,6 +40,9 @@ from cjm_fasthtml_tailwind.utilities.flexbox_and_grid import (
40
40
  )
41
41
  from cjm_fasthtml_tailwind.core.base import combine_classes
42
42
 
43
+ # App core: V8 empty-state recipe
44
+ from cjm_fasthtml_app_core.components.empty_state import render_empty_state
45
+
43
46
  # Virtual collection
44
47
  from cjm_fasthtml_virtual_collection.core.models import CellRenderContext, ColumnDef
45
48
  from cjm_fasthtml_virtual_collection.components.collection import render_virtual_collection
@@ -283,20 +286,6 @@ def create_source_cell_renderer(
283
286
  return _render_record_cell(item, ctx, toggle_url=toggle_url)
284
287
  return render_cell
285
288
 
286
-
287
- def render_source_empty() -> Any: # Empty state component
288
- """Render empty state when no transcription sources are available."""
289
- return Div(
290
- P("No transcription sources found",
291
- cls=combine_classes(text_tiers.muted, font_size.lg)),
292
- P("Add transcription plugins or external databases to see sources here.",
293
- cls=combine_classes(text_tiers.subtle, font_size.sm)),
294
- cls=combine_classes(
295
- p(8), flex_display, flex_direction.col,
296
- justify.center, items.center, grow(),
297
- ),
298
- )
299
-
300
289
  # %% ../../nbs/components/source_browser.ipynb #4ltbmgr1f83
301
290
  # Content wrapper ID for viewport-fit container measurement
302
291
  _SB_CONTENT_ID = "sb-content"
@@ -362,7 +351,11 @@ def _render_source_browser_vc_content(
362
351
  vc_html = render_virtual_collection(
363
352
  items=sb_state.items, config=vc_config, state=vc_state,
364
353
  ids=vc_ids, urls=vc_urls, render_cell=sb_state.render_cell,
365
- render_empty=render_source_empty,
354
+ render_empty=lambda: render_empty_state(
355
+ message="No transcription sources found",
356
+ detail="Add transcription plugins or external databases to surface sources here.",
357
+ icon_name="database",
358
+ ),
366
359
  )
367
360
 
368
361
  # Keyboard system — use caller-supplied or build internally.
@@ -31,7 +31,7 @@ from .core import _activate_toggle_ref
31
31
  from cjm_transcript_source_select.components.source_browser import (
32
32
  SourceBrowserItem, SOURCE_BROWSER_COLUMNS,
33
33
  build_source_items, is_source_item_skippable,
34
- render_source_empty, _render_header_cell, _render_record_cell,
34
+ _render_header_cell, _render_record_cell,
35
35
  build_source_browser_keyboard_system,
36
36
  )
37
37
  from ..components.preview_panel import _render_preview_panel
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cjm-transcript-source-select
3
- Version: 0.0.32
3
+ Version: 0.0.34
4
4
  Summary: FastHTML source selection component for transcript decomposition workflows, with federated database browsing, drag-drop ordering, and keyboard navigation.
5
5
  Author-email: "Christian J. Mills" <9126128+cj-mills@users.noreply.github.com>
6
6
  License: Apache-2.0
@@ -18,20 +18,20 @@ License-File: LICENSE
18
18
  Requires-Dist: python-fasthtml
19
19
  Requires-Dist: cjm-plugin-system>=0.0.30
20
20
  Requires-Dist: cjm-transcription-plugin-system>=0.0.15
21
- Requires-Dist: cjm-fasthtml-app-core>=0.0.19
21
+ Requires-Dist: cjm-fasthtml-app-core>=0.0.20
22
22
  Requires-Dist: cjm-fasthtml-daisyui>=0.0.15
23
23
  Requires-Dist: cjm_fasthtml_lucide_icons>=0.0.1
24
- Requires-Dist: cjm_fasthtml_file_browser>=0.0.21
25
- Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.25
24
+ Requires-Dist: cjm_fasthtml_file_browser>=0.0.23
25
+ Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.26
26
26
  Requires-Dist: duckdb
27
27
  Requires-Dist: pandas
28
28
  Requires-Dist: cjm_workflow_state>=0.0.3
29
29
  Requires-Dist: cjm_source_provider>=0.0.1
30
- Requires-Dist: cjm_fasthtml_interactions>=0.0.36
31
- Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.14
32
- Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.23
33
- Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.18
34
- Requires-Dist: cjm_fasthtml_design_system>=0.0.11
30
+ Requires-Dist: cjm_fasthtml_interactions>=0.0.37
31
+ Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.15
32
+ Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.26
33
+ Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.19
34
+ Requires-Dist: cjm_fasthtml_design_system>=0.0.12
35
35
  Dynamic: license-file
36
36
 
37
37
  # cjm-transcript-source-select
@@ -96,57 +96,57 @@ graph LR
96
96
  utils[utils<br/>utils]
97
97
 
98
98
  components_helpers --> models
99
- components_local_files --> html_ids
100
99
  components_local_files --> components_helpers
100
+ components_local_files --> html_ids
101
101
  components_preview_panel --> html_ids
102
102
  components_source_browser --> services_source_utils
103
- components_source_browser --> html_ids
104
103
  components_source_browser --> utils
104
+ components_source_browser --> html_ids
105
+ components_step_renderer --> utils
105
106
  components_step_renderer --> components_selection_queue
106
- components_step_renderer --> html_ids
107
- components_step_renderer --> models
108
107
  components_step_renderer --> components_local_files
109
108
  components_step_renderer --> components_source_browser
109
+ components_step_renderer --> models
110
110
  components_step_renderer --> components_preview_panel
111
- components_step_renderer --> utils
111
+ components_step_renderer --> html_ids
112
112
  routes_core --> models
113
- routes_core --> html_ids
114
- routes_core --> components_step_renderer
115
113
  routes_core --> services_source
116
114
  routes_core --> components_selection_queue
117
- routes_filtering --> services_source_utils
118
- routes_filtering --> services_source
115
+ routes_core --> components_step_renderer
116
+ routes_core --> html_ids
119
117
  routes_filtering --> routes_core
118
+ routes_filtering --> services_source
119
+ routes_filtering --> services_source_utils
120
120
  routes_filtering --> models
121
121
  routes_init --> routes_core
122
- routes_init --> services_source
123
- routes_init --> routes_local_files
122
+ routes_init --> routes_filtering
124
123
  routes_init --> routes_queue
124
+ routes_init --> services_source
125
125
  routes_init --> routes_tabs
126
+ routes_init --> routes_local_files
126
127
  routes_init --> models
127
- routes_init --> routes_filtering
128
128
  routes_init --> routes_source_browser
129
129
  routes_local_files --> components_local_files
130
- routes_local_files --> services_source
131
130
  routes_local_files --> routes_core
132
131
  routes_local_files --> models
132
+ routes_local_files --> services_source
133
+ routes_queue --> routes_core
133
134
  routes_queue --> services_source
134
135
  routes_queue --> services_source_utils
135
- routes_queue --> routes_core
136
136
  routes_queue --> models
137
137
  routes_queue --> components_preview_panel
138
- routes_source_browser --> services_source
139
138
  routes_source_browser --> components_source_browser
139
+ routes_source_browser --> services_source
140
+ routes_source_browser --> services_source_utils
140
141
  routes_source_browser --> html_ids
141
142
  routes_source_browser --> models
142
- routes_source_browser --> services_source_utils
143
143
  routes_source_browser --> routes_core
144
144
  routes_source_browser --> components_preview_panel
145
145
  routes_tabs --> models
146
+ routes_tabs --> components_step_renderer
146
147
  routes_tabs --> routes_core
147
- routes_tabs --> services_source
148
148
  routes_tabs --> services_source_utils
149
- routes_tabs --> components_step_renderer
149
+ routes_tabs --> services_source
150
150
  ```
151
151
 
152
152
  *52 cross-module dependencies detected*
@@ -786,11 +786,6 @@ def _render_queue_content(
786
786
  "Render the job ID display as custom content for each queue item."
787
787
  ```
788
788
 
789
- ``` python
790
- def _render_queue_empty() -> Any: # Empty state element
791
- "Render the custom empty state for the source selection queue."
792
- ```
793
-
794
789
  ``` python
795
790
  def _render_selection_queue(
796
791
  selected_sources: List[Dict[str, str]], # List of selected sources in order
@@ -1063,7 +1058,6 @@ from cjm_transcript_source_select.components.source_browser import (
1063
1058
  build_source_items,
1064
1059
  is_source_item_skippable,
1065
1060
  create_source_cell_renderer,
1066
- render_source_empty,
1067
1061
  build_source_browser_keyboard_system
1068
1062
  )
1069
1063
  ```
@@ -1120,11 +1114,6 @@ def create_source_cell_renderer(
1120
1114
  "Create a render_cell callback for the source browser virtual collection."
1121
1115
  ```
1122
1116
 
1123
- ``` python
1124
- def render_source_empty() -> Any: # Empty state component
1125
- "Render empty state when no transcription sources are available."
1126
- ```
1127
-
1128
1117
  ``` python
1129
1118
  def build_source_browser_keyboard_system(
1130
1119
  sb_state: Any, # SourceBrowserRouterState (carries vc_ids, vc_btn_ids, vc_urls)
@@ -0,0 +1,17 @@
1
+ python-fasthtml
2
+ cjm-plugin-system>=0.0.30
3
+ cjm-transcription-plugin-system>=0.0.15
4
+ cjm-fasthtml-app-core>=0.0.20
5
+ cjm-fasthtml-daisyui>=0.0.15
6
+ cjm_fasthtml_lucide_icons>=0.0.1
7
+ cjm_fasthtml_file_browser>=0.0.23
8
+ cjm_fasthtml_keyboard_navigation>=0.0.26
9
+ duckdb
10
+ pandas
11
+ cjm_workflow_state>=0.0.3
12
+ cjm_source_provider>=0.0.1
13
+ cjm_fasthtml_interactions>=0.0.37
14
+ cjm_fasthtml_viewport_fit>=0.0.15
15
+ cjm_fasthtml_virtual_collection>=0.0.26
16
+ cjm_fasthtml_sortable_queue>=0.0.19
17
+ cjm_fasthtml_design_system>=0.0.12
@@ -12,7 +12,7 @@ license = {text = "Apache-2.0"}
12
12
  authors = [{name = "Christian J. Mills", email = "9126128+cj-mills@users.noreply.github.com"}]
13
13
  keywords = ['nbdev', 'jupyter', 'notebook', 'python']
14
14
  classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"]
15
- dependencies = ['python-fasthtml', 'cjm-plugin-system>=0.0.30', 'cjm-transcription-plugin-system>=0.0.15', 'cjm-fasthtml-app-core>=0.0.19', 'cjm-fasthtml-daisyui>=0.0.15', 'cjm_fasthtml_lucide_icons>=0.0.1', 'cjm_fasthtml_file_browser>=0.0.21', 'cjm_fasthtml_keyboard_navigation>=0.0.25', 'duckdb', 'pandas', 'cjm_workflow_state>=0.0.3', 'cjm_source_provider>=0.0.1', 'cjm_fasthtml_interactions>=0.0.36', 'cjm_fasthtml_viewport_fit>=0.0.14', 'cjm_fasthtml_virtual_collection>=0.0.23', 'cjm_fasthtml_sortable_queue>=0.0.18', 'cjm_fasthtml_design_system>=0.0.11']
15
+ dependencies = ['python-fasthtml', 'cjm-plugin-system>=0.0.30', 'cjm-transcription-plugin-system>=0.0.15', 'cjm-fasthtml-app-core>=0.0.20', 'cjm-fasthtml-daisyui>=0.0.15', 'cjm_fasthtml_lucide_icons>=0.0.1', 'cjm_fasthtml_file_browser>=0.0.23', 'cjm_fasthtml_keyboard_navigation>=0.0.26', 'duckdb', 'pandas', 'cjm_workflow_state>=0.0.3', 'cjm_source_provider>=0.0.1', 'cjm_fasthtml_interactions>=0.0.37', 'cjm_fasthtml_viewport_fit>=0.0.15', 'cjm_fasthtml_virtual_collection>=0.0.26', 'cjm_fasthtml_sortable_queue>=0.0.19', 'cjm_fasthtml_design_system>=0.0.12']
16
16
 
17
17
  [project.urls]
18
18
  Repository = "https://github.com/cj-mills/cjm-transcript-source-select"
@@ -1 +0,0 @@
1
- __version__ = "0.0.32"
@@ -1,17 +0,0 @@
1
- python-fasthtml
2
- cjm-plugin-system>=0.0.30
3
- cjm-transcription-plugin-system>=0.0.15
4
- cjm-fasthtml-app-core>=0.0.19
5
- cjm-fasthtml-daisyui>=0.0.15
6
- cjm_fasthtml_lucide_icons>=0.0.1
7
- cjm_fasthtml_file_browser>=0.0.21
8
- cjm_fasthtml_keyboard_navigation>=0.0.25
9
- duckdb
10
- pandas
11
- cjm_workflow_state>=0.0.3
12
- cjm_source_provider>=0.0.1
13
- cjm_fasthtml_interactions>=0.0.36
14
- cjm_fasthtml_viewport_fit>=0.0.14
15
- cjm_fasthtml_virtual_collection>=0.0.23
16
- cjm_fasthtml_sortable_queue>=0.0.18
17
- cjm_fasthtml_design_system>=0.0.11