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.
- {cjm_transcript_source_select-0.0.32/cjm_transcript_source_select.egg-info → cjm_transcript_source_select-0.0.34}/PKG-INFO +27 -38
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/README.md +18 -29
- cjm_transcript_source_select-0.0.34/cjm_transcript_source_select/__init__.py +1 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/_modidx.py +1 -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
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/source_browser.py +9 -16
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/source_browser.py +1 -1
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34/cjm_transcript_source_select.egg-info}/PKG-INFO +27 -38
- cjm_transcript_source_select-0.0.34/cjm_transcript_source_select.egg-info/requires.txt +17 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/pyproject.toml +1 -1
- cjm_transcript_source_select-0.0.32/cjm_transcript_source_select/__init__.py +0 -1
- cjm_transcript_source_select-0.0.32/cjm_transcript_source_select.egg-info/requires.txt +0 -17
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/LICENSE +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/MANIFEST.in +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/__init__.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/helpers.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/local_files.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/preview_panel.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/components/step_renderer.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/html_ids.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/models.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/__init__.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/core.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/filtering.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/init.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/local_files.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/queue.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/routes/tabs.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/__init__.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/source.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/services/source_utils.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select/utils.py +0 -0
- {cjm_transcript_source_select-0.0.32 → cjm_transcript_source_select-0.0.34}/cjm_transcript_source_select.egg-info/SOURCES.txt +0 -0
- {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
- {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
- {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
- {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.
|
|
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.
|
|
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.
|
|
25
|
-
Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.
|
|
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.
|
|
31
|
-
Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.
|
|
32
|
-
Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.
|
|
33
|
-
Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.
|
|
34
|
-
Requires-Dist: cjm_fasthtml_design_system>=0.0.
|
|
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 -->
|
|
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
|
-
|
|
118
|
-
|
|
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 -->
|
|
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 -->
|
|
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 -->
|
|
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
|
-
|
|
82
|
-
|
|
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 -->
|
|
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 -->
|
|
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=
|
|
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', '
|
|
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=
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
25
|
-
Requires-Dist: cjm_fasthtml_keyboard_navigation>=0.0.
|
|
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.
|
|
31
|
-
Requires-Dist: cjm_fasthtml_viewport_fit>=0.0.
|
|
32
|
-
Requires-Dist: cjm_fasthtml_virtual_collection>=0.0.
|
|
33
|
-
Requires-Dist: cjm_fasthtml_sortable_queue>=0.0.
|
|
34
|
-
Requires-Dist: cjm_fasthtml_design_system>=0.0.
|
|
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 -->
|
|
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
|
-
|
|
118
|
-
|
|
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 -->
|
|
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 -->
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|