feat(runtime): add URL deep-linking and hashchange navigation#5
Open
Reebz wants to merge 1 commit into
Open
Conversation
Reload always landed on slide one, links could not target a slide, and a deep-linked chart slide rendered blank because the chart and notes bootstrap hardcoded slide zero. Add #N deep-linking with a hashchange listener and history.replaceState, and bootstrap charts and notes from the current slide. Co-Authored-By: Leslie Barbara Knope (Claude Opus 4.8 (1M context)) <noreply@anthropic.com>
|
@Reebz is attempting to deploy a commit to the bluedusk's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Reload always landed on slide one, a link could not target a specific slide, and a deep-linked chart slide rendered blank because the chart and notes bootstrap hardcoded slide zero.
slideFromHash()parses a one-based#N, clamps it to the valid range, and defaults to slide one.currentinitializes from it,goTo()writeshistory.replaceState(null, '', '#' + (current + 1)), and ahashchangelistener handles Back and manual hash edits. The existingindex === currentguard prevents a feedback loop.currentinstead of a hardcoded slide zero, so a deep-linked chart slide draws and the right notes log.Mirrored into
assets/slides-runtime.jsand the inline runtime inreferences/html-template.md, and documented inreferences/presentation-layer.md.Test
#5opens slide five with its charts rendered.Dependencies
Touches
slides-runtime.js, so it is cleanest to merge after the accessibility PR.Co-Authored-By: Leslie Barbara Knope (Claude Opus 4.8 (1M context)) noreply@anthropic.com