JavaScript generators for width, scale, and card count management.
Width Management
Syncs the width slider value with localStorage and the card stack inner container’s max-width. Debounces server persistence.
# Test width management JS generationids = CardStackHtmlIds(prefix="cs0")config = CardStackConfig(prefix="cs0")urls = CardStackUrls(save_width="/cs/save_width")js = _generate_width_mgmt_js(ids, config, urls)assert"Width Management"in jsassert ids.card_stack_inner in jsassert ids.width_slider in jsassert"ns.updateWidth"in jsassert"ns.decreaseWidth"in jsassert"ns.increaseWidth"in jsassert"ns.applyWidth"in jsassert"ns.triggerAutoAdjust"in jsassert urls.save_width in jsprint("Width management JS tests passed!")
Width management JS tests passed!
Scale Management
Syncs the scale slider value with localStorage and a CSS custom property (--card-stack-scale). Debounces server persistence.
# Test scale management JS generationjs = _generate_scale_mgmt_js(ids, config, urls)assert"Scale Management"in jsassert ids.card_stack in jsassert ids.scale_slider in jsassert"ns.updateScale"in jsassert"ns.decreaseScale"in jsassert"ns.increaseScale"in jsassert"ns.applyScale"in jsassert"--card-stack-scale"in jsassert"ns.triggerAutoAdjust"in jsprint("Scale management JS tests passed!")
Scale management JS tests passed!
Card Count Management
Manages the visible card count dropdown, localStorage persistence, and the auto/manual mode toggle. Fires HTMX viewport updates when the count changes.
# Test card count management JS generationurls_full = CardStackUrls(update_viewport="/cs/update_viewport")js = _generate_card_count_mgmt_js(ids, config, urls_full)assert"Card Count Management"in jsassert ids.card_stack in jsassert ids.card_count_select in jsassert"ns.updateCardCount"in jsassert"ns._autoUpdateCount"in jsassert"ns.handleCountChange"in jsassert"ns.syncCountDropdown"in js # Exposed for external callersassert"_isAutoMode"in jsassert"_syncCountDropdown"in jsassert"_AUTO_KEY"in jsassert"swap: 'none'"in js# Valid count options from configassert"1, 3, 5, 7, 9"in js# is_auto parameter passed in both functionsassert"is_auto: 'false'"in js # Manual selectionassert"is_auto: 'true'"in js # Auto-adjustmentprint("Card count management JS tests passed!")