cjm-transcript-source-select 0.0.12__tar.gz → 0.0.14__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.12/cjm_transcript_source_select.egg-info → cjm_transcript_source_select-0.0.14}/PKG-INFO +21 -23
  2. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/README.md +20 -22
  3. cjm_transcript_source_select-0.0.14/cjm_transcript_source_select/__init__.py +1 -0
  4. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/local_files.py +4 -5
  5. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/selection_queue.py +1 -1
  6. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/local_files.py +2 -11
  7. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14/cjm_transcript_source_select.egg-info}/PKG-INFO +21 -23
  8. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/settings.ini +1 -1
  9. cjm_transcript_source_select-0.0.12/cjm_transcript_source_select/__init__.py +0 -1
  10. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/LICENSE +0 -0
  11. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/MANIFEST.in +0 -0
  12. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/_modidx.py +0 -0
  13. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/__init__.py +0 -0
  14. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/helpers.py +0 -0
  15. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/preview_panel.py +0 -0
  16. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/source_browser.py +0 -0
  17. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/components/step_renderer.py +0 -0
  18. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/html_ids.py +0 -0
  19. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/models.py +0 -0
  20. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/__init__.py +0 -0
  21. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/core.py +0 -0
  22. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/filtering.py +0 -0
  23. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/init.py +0 -0
  24. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/queue.py +0 -0
  25. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/source_browser.py +0 -0
  26. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/routes/tabs.py +0 -0
  27. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/services/__init__.py +0 -0
  28. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/services/source.py +0 -0
  29. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/services/source_utils.py +0 -0
  30. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select/utils.py +0 -0
  31. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/SOURCES.txt +0 -0
  32. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/dependency_links.txt +0 -0
  33. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/entry_points.txt +0 -0
  34. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/not-zip-safe +0 -0
  35. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/requires.txt +0 -0
  36. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/cjm_transcript_source_select.egg-info/top_level.txt +0 -0
  37. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/pyproject.toml +0 -0
  38. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/setup.cfg +0 -0
  39. {cjm_transcript_source_select-0.0.12 → cjm_transcript_source_select-0.0.14}/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.12
3
+ Version: 0.0.14
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
@@ -112,51 +112,51 @@ graph LR
112
112
  components_source_browser --> services_source_utils
113
113
  components_source_browser --> utils
114
114
  components_source_browser --> html_ids
115
- components_step_renderer --> components_local_files
116
- components_step_renderer --> html_ids
117
115
  components_step_renderer --> components_preview_panel
118
- components_step_renderer --> components_selection_queue
119
116
  components_step_renderer --> models
120
117
  components_step_renderer --> utils
121
118
  components_step_renderer --> components_source_browser
119
+ components_step_renderer --> components_selection_queue
120
+ components_step_renderer --> components_local_files
121
+ components_step_renderer --> html_ids
122
+ routes_core --> models
122
123
  routes_core --> components_step_renderer
123
- routes_core --> services_source
124
- routes_core --> components_selection_queue
125
124
  routes_core --> html_ids
126
- routes_core --> models
127
- routes_filtering --> services_source_utils
125
+ routes_core --> components_selection_queue
126
+ routes_core --> services_source
127
+ routes_filtering --> models
128
128
  routes_filtering --> routes_core
129
+ routes_filtering --> services_source_utils
129
130
  routes_filtering --> services_source
130
- routes_filtering --> models
131
131
  routes_init --> routes_core
132
132
  routes_init --> routes_queue
133
- routes_init --> routes_tabs
134
- routes_init --> routes_local_files
135
- routes_init --> services_source
136
133
  routes_init --> models
134
+ routes_init --> routes_local_files
137
135
  routes_init --> routes_source_browser
138
136
  routes_init --> routes_filtering
137
+ routes_init --> routes_tabs
138
+ routes_init --> services_source
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
141
+ routes_local_files --> services_source
142
+ routes_local_files --> routes_core
143
143
  routes_queue --> services_source_utils
144
- routes_queue --> components_preview_panel
145
144
  routes_queue --> routes_core
146
- routes_queue --> services_source
145
+ routes_queue --> components_preview_panel
147
146
  routes_queue --> models
148
- routes_source_browser --> services_source_utils
149
- routes_source_browser --> components_source_browser
147
+ routes_queue --> services_source
150
148
  routes_source_browser --> routes_core
151
149
  routes_source_browser --> components_preview_panel
152
- routes_source_browser --> services_source
153
150
  routes_source_browser --> models
151
+ routes_source_browser --> components_source_browser
152
+ routes_source_browser --> services_source_utils
153
+ routes_source_browser --> services_source
154
154
  routes_source_browser --> html_ids
155
- routes_tabs --> services_source
156
155
  routes_tabs --> routes_core
156
+ routes_tabs --> services_source_utils
157
157
  routes_tabs --> models
158
158
  routes_tabs --> components_step_renderer
159
- routes_tabs --> services_source_utils
159
+ routes_tabs --> services_source
160
160
  ```
161
161
 
162
162
  *52 cross-module dependencies detected*
@@ -526,8 +526,6 @@ def _handle_remove_external_source(
526
526
  sess, # FastHTML session object
527
527
  db_path: str, # Path to the .db file to remove
528
528
  external_db_paths_ref: List[str], # Shared external paths list (mutated in place)
529
- fb_state_getter: Callable[[], BrowserState], # File browser state getter
530
- fb_state_setter: Callable[[BrowserState], None], # File browser state setter
531
529
  fb_routers: FileBrowserRouters, # File browser routers (for targeted OOB)
532
530
  remove_url: str, # URL for remove button in external sources list
533
531
  ): # Tuple of OOB elements (external sources list + checkbox cells)
@@ -66,51 +66,51 @@ graph LR
66
66
  components_source_browser --> services_source_utils
67
67
  components_source_browser --> utils
68
68
  components_source_browser --> html_ids
69
- components_step_renderer --> components_local_files
70
- components_step_renderer --> html_ids
71
69
  components_step_renderer --> components_preview_panel
72
- components_step_renderer --> components_selection_queue
73
70
  components_step_renderer --> models
74
71
  components_step_renderer --> utils
75
72
  components_step_renderer --> components_source_browser
73
+ components_step_renderer --> components_selection_queue
74
+ components_step_renderer --> components_local_files
75
+ components_step_renderer --> html_ids
76
+ routes_core --> models
76
77
  routes_core --> components_step_renderer
77
- routes_core --> services_source
78
- routes_core --> components_selection_queue
79
78
  routes_core --> html_ids
80
- routes_core --> models
81
- routes_filtering --> services_source_utils
79
+ routes_core --> components_selection_queue
80
+ routes_core --> services_source
81
+ routes_filtering --> models
82
82
  routes_filtering --> routes_core
83
+ routes_filtering --> services_source_utils
83
84
  routes_filtering --> services_source
84
- routes_filtering --> models
85
85
  routes_init --> routes_core
86
86
  routes_init --> routes_queue
87
- routes_init --> routes_tabs
88
- routes_init --> routes_local_files
89
- routes_init --> services_source
90
87
  routes_init --> models
88
+ routes_init --> routes_local_files
91
89
  routes_init --> routes_source_browser
92
90
  routes_init --> routes_filtering
91
+ routes_init --> routes_tabs
92
+ routes_init --> services_source
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
95
+ routes_local_files --> services_source
96
+ routes_local_files --> routes_core
97
97
  routes_queue --> services_source_utils
98
- routes_queue --> components_preview_panel
99
98
  routes_queue --> routes_core
100
- routes_queue --> services_source
99
+ routes_queue --> components_preview_panel
101
100
  routes_queue --> models
102
- routes_source_browser --> services_source_utils
103
- routes_source_browser --> components_source_browser
101
+ routes_queue --> services_source
104
102
  routes_source_browser --> routes_core
105
103
  routes_source_browser --> components_preview_panel
106
- routes_source_browser --> services_source
107
104
  routes_source_browser --> models
105
+ routes_source_browser --> components_source_browser
106
+ routes_source_browser --> services_source_utils
107
+ routes_source_browser --> services_source
108
108
  routes_source_browser --> html_ids
109
- routes_tabs --> services_source
110
109
  routes_tabs --> routes_core
110
+ routes_tabs --> services_source_utils
111
111
  routes_tabs --> models
112
112
  routes_tabs --> components_step_renderer
113
- routes_tabs --> services_source_utils
113
+ routes_tabs --> services_source
114
114
  ```
115
115
 
116
116
  *52 cross-module dependencies detected*
@@ -480,8 +480,6 @@ def _handle_remove_external_source(
480
480
  sess, # FastHTML session object
481
481
  db_path: str, # Path to the .db file to remove
482
482
  external_db_paths_ref: List[str], # Shared external paths list (mutated in place)
483
- fb_state_getter: Callable[[], BrowserState], # File browser state getter
484
- fb_state_setter: Callable[[BrowserState], None], # File browser state setter
485
483
  fb_routers: FileBrowserRouters, # File browser routers (for targeted OOB)
486
484
  remove_url: str, # URL for remove button in external sources list
487
485
  ): # Tuple of OOB elements (external sources list + checkbox cells)
@@ -0,0 +1 @@
1
+ __version__ = "0.0.14"
@@ -16,6 +16,7 @@ from cjm_fasthtml_interactions.core.context import InteractionContext
16
16
  # DaisyUI components
17
17
  from cjm_fasthtml_daisyui.components.actions.button import btn, btn_sizes, btn_styles
18
18
  from cjm_fasthtml_daisyui.components.data_display.badge import badge, badge_colors, badge_sizes
19
+ from cjm_fasthtml_daisyui.components.data_display.list import list_ui, list_row
19
20
  from cjm_fasthtml_daisyui.components.feedback.alert import alert, alert_colors
20
21
  from cjm_fasthtml_daisyui.utilities.semantic_colors import bg_dui, text_dui, border_dui
21
22
  from cjm_fasthtml_daisyui.utilities.border_radius import border_radius
@@ -123,15 +124,13 @@ def _render_external_sources_list(
123
124
  cls=combine_classes(btn, btn_styles.ghost, btn_sizes.xs, shrink._0),
124
125
  hx_post=remove_url,
125
126
  hx_vals=json.dumps({"db_path": db_path}),
126
- # Use SOURCE_LIST ID for consistent zone focus ring
127
- hx_target=SelectionHtmlIds.as_selector(SelectionHtmlIds.SOURCE_LIST),
128
- hx_swap="outerHTML",
127
+ hx_swap="none",
129
128
  title=f"Remove {path.name}"
130
129
  ),
131
130
  cls=combine_classes(flex_display, items.center, gap(2), p.y(1), p.x(2))
132
131
  ),
133
132
  title=db_path,
134
- cls=combine_classes(border_dui.base_300, border.b(), bg_dui.primary.opacity(10))
133
+ cls=combine_classes(list_row, border_dui.base_300, border.b(), bg_dui.primary.opacity(10))
135
134
  ))
136
135
 
137
136
  return Div(
@@ -149,7 +148,7 @@ def _render_external_sources_list(
149
148
  Ul(
150
149
  *list_items,
151
150
  id=SelectionHtmlIds.EXTERNAL_SOURCES_LIST,
152
- cls=combine_classes(border_radius.box, list_style.none, m(0), p(0), overflow.y.auto, max_h(32))
151
+ cls=combine_classes(list_ui, m(0), p(0), overflow.y.auto, max_h(32))
153
152
  ),
154
153
  id=SelectionHtmlIds.EXTERNAL_SOURCES_SECTION,
155
154
  cls=combine_classes(m.t(2), shrink._0),
@@ -54,7 +54,7 @@ def _render_queue_empty() -> Any: # Empty state element
54
54
  """Render the custom empty state for the source selection queue."""
55
55
  return P(
56
56
  "Select transcriptions from the browser",
57
- cls=combine_classes(text_dui.base_content.opacity(50), text_align.center, font_size.sm, p(2))
57
+ cls=combine_classes(text_dui.base_content.opacity(50), text_align.center, font_size.md, p(4))
58
58
  )
59
59
 
60
60
  # %% ../../nbs/components/selection_queue.ipynb #17uipzddaut
@@ -52,8 +52,6 @@ def _handle_remove_external_source(
52
52
  sess, # FastHTML session object
53
53
  db_path: str, # Path to the .db file to remove
54
54
  external_db_paths_ref: List[str], # Shared external paths list (mutated in place)
55
- fb_state_getter: Callable[[], BrowserState], # File browser state getter
56
- fb_state_setter: Callable[[BrowserState], None], # File browser state setter
57
55
  fb_routers: FileBrowserRouters, # File browser routers (for targeted OOB)
58
56
  remove_url: str, # URL for remove button in external sources list
59
57
  ): # Tuple of OOB elements (external sources list + checkbox cells)
@@ -66,13 +64,8 @@ def _handle_remove_external_source(
66
64
  _update_step_state(state_store, workflow_id, session_id, external_db_paths=list(external_db_paths_ref))
67
65
  source_service.set_external_paths(list(external_db_paths_ref))
68
66
 
69
- # Sync browser selection state with external_db_paths for checkbox display
70
- browser_state = fb_state_getter()
71
- browser_state.selection.selected_paths = list(external_db_paths_ref)
72
- fb_state_setter(browser_state)
73
-
74
- # Targeted OOB updates instead of full panel re-render
75
- checkbox_oobs = fb_routers.render_selection_oobs([db_path])
67
+ # Sync selection + get targeted OOBs in one call
68
+ checkbox_oobs = fb_routers.update_selection_oobs(list(external_db_paths_ref), [db_path])
76
69
  external_list_oob = _render_external_sources_list(
77
70
  list(external_db_paths_ref), remove_url, oob=True,
78
71
  )
@@ -182,8 +175,6 @@ def init_local_files_router(
182
175
  state_store, workflow_id, source_service,
183
176
  sess, db_path,
184
177
  external_db_paths_ref=_external_db_paths,
185
- fb_state_getter=_fb_state_getter,
186
- fb_state_setter=_fb_state_setter,
187
178
  fb_routers=fb_routers,
188
179
  remove_url=urls.remove_external,
189
180
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cjm-transcript-source-select
3
- Version: 0.0.12
3
+ Version: 0.0.14
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
@@ -112,51 +112,51 @@ graph LR
112
112
  components_source_browser --> services_source_utils
113
113
  components_source_browser --> utils
114
114
  components_source_browser --> html_ids
115
- components_step_renderer --> components_local_files
116
- components_step_renderer --> html_ids
117
115
  components_step_renderer --> components_preview_panel
118
- components_step_renderer --> components_selection_queue
119
116
  components_step_renderer --> models
120
117
  components_step_renderer --> utils
121
118
  components_step_renderer --> components_source_browser
119
+ components_step_renderer --> components_selection_queue
120
+ components_step_renderer --> components_local_files
121
+ components_step_renderer --> html_ids
122
+ routes_core --> models
122
123
  routes_core --> components_step_renderer
123
- routes_core --> services_source
124
- routes_core --> components_selection_queue
125
124
  routes_core --> html_ids
126
- routes_core --> models
127
- routes_filtering --> services_source_utils
125
+ routes_core --> components_selection_queue
126
+ routes_core --> services_source
127
+ routes_filtering --> models
128
128
  routes_filtering --> routes_core
129
+ routes_filtering --> services_source_utils
129
130
  routes_filtering --> services_source
130
- routes_filtering --> models
131
131
  routes_init --> routes_core
132
132
  routes_init --> routes_queue
133
- routes_init --> routes_tabs
134
- routes_init --> routes_local_files
135
- routes_init --> services_source
136
133
  routes_init --> models
134
+ routes_init --> routes_local_files
137
135
  routes_init --> routes_source_browser
138
136
  routes_init --> routes_filtering
137
+ routes_init --> routes_tabs
138
+ routes_init --> services_source
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
141
+ routes_local_files --> services_source
142
+ routes_local_files --> routes_core
143
143
  routes_queue --> services_source_utils
144
- routes_queue --> components_preview_panel
145
144
  routes_queue --> routes_core
146
- routes_queue --> services_source
145
+ routes_queue --> components_preview_panel
147
146
  routes_queue --> models
148
- routes_source_browser --> services_source_utils
149
- routes_source_browser --> components_source_browser
147
+ routes_queue --> services_source
150
148
  routes_source_browser --> routes_core
151
149
  routes_source_browser --> components_preview_panel
152
- routes_source_browser --> services_source
153
150
  routes_source_browser --> models
151
+ routes_source_browser --> components_source_browser
152
+ routes_source_browser --> services_source_utils
153
+ routes_source_browser --> services_source
154
154
  routes_source_browser --> html_ids
155
- routes_tabs --> services_source
156
155
  routes_tabs --> routes_core
156
+ routes_tabs --> services_source_utils
157
157
  routes_tabs --> models
158
158
  routes_tabs --> components_step_renderer
159
- routes_tabs --> services_source_utils
159
+ routes_tabs --> services_source
160
160
  ```
161
161
 
162
162
  *52 cross-module dependencies detected*
@@ -526,8 +526,6 @@ def _handle_remove_external_source(
526
526
  sess, # FastHTML session object
527
527
  db_path: str, # Path to the .db file to remove
528
528
  external_db_paths_ref: List[str], # Shared external paths list (mutated in place)
529
- fb_state_getter: Callable[[], BrowserState], # File browser state getter
530
- fb_state_setter: Callable[[BrowserState], None], # File browser state setter
531
529
  fb_routers: FileBrowserRouters, # File browser routers (for targeted OOB)
532
530
  remove_url: str, # URL for remove button in external sources list
533
531
  ): # Tuple of OOB elements (external sources list + checkbox cells)
@@ -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.12
4
+ version = 0.0.14
5
5
  min_python = 3.12
6
6
  license = apache2
7
7
  black_formatting = False
@@ -1 +0,0 @@
1
- __version__ = "0.0.12"