1. 01 Dec, 2022 2 commits
    • Robert Knight's avatar
      Remove temporary client configuration from frame when client is unloaded · 6cf7a391
      Robert Knight authored
      When the client is unloaded in a guest-only iframe, remove the client
      configuration that was added by the `injectClient` function. This is
      necessary for subsequent reloading of the client to work, as
      `injectClient` aborts if the configuration already exists in a frame.
      
      This change allows the client to be properly de-activated and then later
      re-activated in a VitalSource book.
      6cf7a391
    • Robert Knight's avatar
      Unload client from iframes when it is unloaded in the host frame · f18218f7
      Robert Knight authored
      When the client is unloaded in a frame H, ensure that it is also unloaded from
      guest frames whose host frame is H. This enables toggling the browser
      extension's active state to work properly in VitalSource Bookshelf and other
      pages which have annotation-enabled iframes.
      
      This works by having the `Guest` instance in the iframe listen for the existing
      "close" message from its connection to the host frame, and relaying that to the
      entry point via a "hostDisconnected" event, which then handles it in the same
      way as if the client had been unloaded directly in the guest frame.
      f18218f7
  2. 30 Nov, 2022 3 commits
    • Robert Knight's avatar
    • Robert Knight's avatar
      Use `<h3>` for chapter headings instead of `<h2>` · 3a7c3f65
      Robert Knight authored
      `<h2>` is already used for the `sr-only` heading for the list of
      threads, so it makes sense to go one level down for chapter headings.
      3a7c3f65
    • Robert Knight's avatar
      Display chapter headings above cards in sidebar · 0a734296
      Robert Knight authored
      Visually group ebook annotations by chapter in the sidebar by displaying
      chapter headings above groups of annotations from a particular chapter.
      
      For each thread a "heading key" is extracted, which is currently the EPUB
      Content Document's CFI, taken from the "EPUBContentSelector" selector. For other
      annotation types we could use a different key in future. When rendering threads
      a heading is displayed above each thread where the key is different than the
      previously rendered thread.
      
      To avoid adding complexity to the virtualization calculations, the headings are
      rendered as part of the first thread in the group, and so the height of the
      heading element is included in the measured height for that thread.
      0a734296
  3. 28 Nov, 2022 10 commits
  4. 23 Nov, 2022 1 commit
  5. 22 Nov, 2022 9 commits
  6. 21 Nov, 2022 8 commits
  7. 18 Nov, 2022 2 commits
    • Lyza Danger Gardner's avatar
      Document colors and remove transitions · 5c7a97bc
      Lyza Danger Gardner authored
      Increase clarity of highlights SASS by documenting where highlight
      colors come from and renaming the argument for the `clusterHighlightStyles`
      mixin. Remove transitions for now until they can be tuned.
      5c7a97bc
    • Lyza Danger Gardner's avatar
      Style highlight clusters with defined colors instead of CSS blending · 13aa4754
      Lyza Danger Gardner authored
      Set explicit second and third colors to use for nested highlights in
      highlight clusters, instead of using `mix-blend-mode: multiply`.
      
      This will allow us to style drawn SVG highlights for PDFS, as transparency
      or blending is not feasible for those.
      
      Reorganize CSS and CSS variables a bit to prepare for next steps.
      13aa4754
  8. 17 Nov, 2022 3 commits
    • Lyza Danger Gardner's avatar
      Convert `highlighter` to TS · 99073c0b
      Lyza Danger Gardner authored
      Prepare for some upcoming changes to this module.
      99073c0b
    • Robert Knight's avatar
      Convert ThreadList to TS · b66168ff
      Robert Knight authored
      b66168ff
    • Robert Knight's avatar
      Assume annotations for other document segments will anchor · b4402316
      Robert Knight authored
      When annotations are loaded into the sidebar, they are not displayed in the
      "Annotations" tab immediately. Instead the client waits until the guest reports
      that the annotation was successfully anchored, or a timeout expires. This is to
      avoid annotations briefly appearing in the Annotations tab and then "jumping" to
      the Orphans tab a moment later if they fail to anchor.
      
      For annotations in document segments (eg. EPUB chapters) other than the one
      currently loaded in a guest frame, the annotation will never anchor in the
      guest, and so the annotation did not appear in the sidebar until the anchoring
      timeout expired. The result was that current-chapter annotations appeared
      quickly, and other-chapter annotations appeared in the sidebar several hundred
      ms later.
      
      This commit improves the experience by optimisitically assuming annotations
      in other chapters will anchor when the user navigates to those chapters, and
      immediately marking them as "anchored" in the store. If they fail to anchor
      when the user navigates to the chapter, then the status will be updated and
      the annotation will be marked as an orphan at that point.
      b4402316
  9. 16 Nov, 2022 2 commits