- 08 Oct, 2021 2 commits
-
-
Eduardo Sanz García authored
* add information about why to use `window.load` instead of `document.DOMContentLoaded` to check when a document is ready * use an invalid local URL (http://localhost:1) to speed DNS lookup in the test * include some comments about the use of `waitForFrameObserver` in the tests
-
Eduardo Sanz García authored
Instead of override the window.hypothesisConfig, I provide the `externalContainerSelector` through a JSON script tag. This allows a more incremental way to add configuration options.
-
- 07 Oct, 2021 12 commits
-
-
Robert Knight authored
-
Robert Knight authored
When injecting the client into a guest frame, proxy any custom asset locations specified via `.js-hypothesis-config` script tags in the host frame. These are used by the browser extension and needed for the VitalSource integration to work in that context. We could probably avoid copying the `sidebarAppUrl` and `notebookAppUrl` settings for guest-only frames. This will require changes to the boot script and possibly the annotator entry point.
-
Robert Knight authored
-
Robert Knight authored
-
Robert Knight authored
Implement the `injectClient` method of Guest that is used by integrations (eg. VitalSource) to inject the client into a chosen frame. In the process the `HypothesisInjector` class has been extracted out of the `CrossFrame` class, since it is unrelated to the rest of the functionality in that class and only lived their because of its dependence on the `Bridge` instance, which will soon be removed (see https://github.com/hypothesis/client/pull/3812). It is now constructed and used directly by the `Guest` class instead.
-
Robert Knight authored
Expose the existing logic for injecting the client into a target frame in HypothesisInjector as a public `injectClient` method and modify it to wait for the document to be loaded if necessary. This method will be used by the guest class to inject the client into specific frames when requested by the current integration. In the case where the frame is discovered by `FrameObserver` this means that `onDocumentReady(frame)` will be called twice. That's OK because the second call will just complete immediately if the frame is already ready.
-
Robert Knight authored
-
Robert Knight authored
Change how the sidebar is notified of guest frames being unloaded to support guest frames where the client has been loaded via means other than `HypothesisInjector` or where the guest is cross-origin. Instead of listening for the guest frame's 'unload' event from the parent frame in `HypothesisInjector`, the guest frame instead listens for this event itself and sends a `hypothesisGuestUnloaded` message to the host frame via `window.postMessage`, which in turn is handled in the `Sidebar` class to relay it to the sidebar app via a `destroyFrame` RPC call. This indirect route works around a bug in Safari (see code comments). As well as supporting future use cases, this also simplifies the `HypothesisInjector` class as it no longer needs access to the `Bridge`.
-
Robert Knight authored
This enables testing handling of the client's discovery of existing frames (on page load) as well as handling of dynamic addition and removal after the client has started.
-
Robert Knight authored
-
Robert Knight authored
Use separate channels for sending messages to guests vs the host in the sidebar, even for the common case when there is only one guest and it is the same frame as the host. This change makes it clear for readers which part of the annotator code is intended to handle a particular message from the sidebar. It is also a step towards supporting host frames that are not guests. This will be needed in ebook readers where the host frame provides the navigation UI and contains the frame displaying the book content, but should not be annotatble itself. - Remove the `bridge` service in the sidebar. The `frameSync` service now provides the entry point for other services/components to make RPC calls to the host or guest frames. Currently the only use case is sending notifications to the host via `FrameSyncService.notifyHost`. - Create separate `Bridge` instances in `FrameSyncService` for sidebar <-> guest and sidebar <-> host communication. The sidebar <-> guest bridge works the same as before. The sidebar <-> host bridge is established by having `FrameSyncService` create a MessageChannel when sending the `hypothesisSidebarReady` notification to the host. The sidebar / host frames then add respective ports of this channel to a Bridge instance. - Change the various existing RPC calls between frames to use either the guest <-> sidebar or host <-> sidebar communication channels as appropriate
-
Robert Knight authored
Show the URLs of all frames connected to the sidebar in the Version info tab of the Help panel. Previously only the URL of the main frame was shown. Initially this will mainly be useful for client developers to check that the expected set of frames are connected to the sidebar in different scenarios.
-
- 06 Oct, 2021 6 commits
-
-
Robert Knight authored
-
Robert Knight authored
-
Robert Knight authored
`Annotator` is not a great name for this interface, but at least make the link between it and Guest clearer by improving its documentation and marking Guest as explicitly implementing it.
-
Robert Knight authored
This adds a new integration for the VitalSource Bookshelf reader. It is comprised of two separate sub-integrations, one for the "container" frame into which the client is initially loaded, and a separate one for the "content" frame that displays the book content. The container frame integration is responsible for injecting the client into the content frame and re-injecting after a navigation. All the annotation-related functionality is a no-op in this frame. The logic for injecting the client depends on a stub method in the Guest class which will be implemented separately. The content frame integration mostly delegates to the HTML integration, but it customizes the document metadata saved with annotations and also prevents the VitalSource viewer's native selection controls from interfering with Hypothesis's ones.
-
Eduardo Sanz García authored
All frontend Hypothesis app are going to have the same base line as this: https://github.com/hypothesis/bouncer/pull/469/commits/6a01199bfc196a8932be271f61c07029dbf886c5
-
Robert Knight authored
-
- 04 Oct, 2021 12 commits
-
-
Robert Knight authored
-
Robert Knight authored
Add a `canAnnotate` method to the `Integration` interface to indicate whether a range is part of the annotatable content of the document. This allows integrations to signal whether the Annotate/Highlight toolbar should be shown for a given selection. Implement it for PDFs by returning `true` if the range is part of the text layer of a single page. Implement it for HTML documents by always returning true. Fixes #3790
-
dependabot[bot] authored
Bumps [@octokit/rest](https://github.com/octokit/rest.js) from 18.11.1 to 18.11.4. - [Release notes](https://github.com/octokit/rest.js/releases) - [Commits](https://github.com/octokit/rest.js/compare/v18.11.1...v18.11.4) --- updated-dependencies: - dependency-name: "@octokit/rest" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) from 7.26.0 to 7.26.1. - [Release notes](https://github.com/yannickcr/eslint-plugin-react/releases) - [Changelog](https://github.com/yannickcr/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/yannickcr/eslint-plugin-react/compare/v7.26.0...v7.26.1) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [babel-plugin-mockable-imports](https://github.com/robertknight/babel-plugin-mockable-imports) from 1.7.1 to 1.8.0. - [Release notes](https://github.com/robertknight/babel-plugin-mockable-imports/releases) - [Changelog](https://github.com/robertknight/babel-plugin-mockable-imports/blob/master/CHANGELOG.md) - [Commits](https://github.com/robertknight/babel-plugin-mockable-imports/compare/v1.7.1...v1.8.0) --- updated-dependencies: - dependency-name: babel-plugin-mockable-imports dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
-
Robert Knight authored
`globalThis` is the preferred way of accessing the global object regardless of environment. It also works in eg. Rollup whereas `global` does not.
-
Robert Knight authored
This is in preparation for switching to an ES module-oriented bundler.
-
dependabot[bot] authored
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/actions/toolkit/releases) - [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core) --- updated-dependencies: - dependency-name: "@actions/core" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [@hypothesis/frontend-shared](https://github.com/hypothesis/frontend-shared) from 3.11.0 to 3.12.0. - [Release notes](https://github.com/hypothesis/frontend-shared/releases) - [Changelog](https://github.com/hypothesis/frontend-shared/blob/main/CHANGELOG.md) - [Commits](https://github.com/hypothesis/frontend-shared/compare/v3.11.0...v3.12.0) --- updated-dependencies: - dependency-name: "@hypothesis/frontend-shared" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.995.0 to 2.999.0. - [Release notes](https://github.com/aws/aws-sdk-js/releases) - [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js/compare/v2.995.0...v2.999.0) --- updated-dependencies: - dependency-name: aws-sdk dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
-
Eduardo Sanz García authored
Although the `delay` utility function is a small function that can almost be in-lined, I decided to create a common `delay` function in `wait.js` and replace all usage in tests by the new function.
-
Robert Knight authored
This adds a mock version of the VitalSource Bookshelf reader to the dev server. It includes only the essential aspects of the viewer's structure that will trigger VitalSource-specific functionality.
-
- 30 Sep, 2021 7 commits
-
-
Robert Knight authored
The Guest implementation no longer has any logic which is specific to a particular document type (PDF, HTML etc.). These details are now all handled by the Integration implementation returned by `createIntegration`. This commit refactors the Guest tests to use a single Integration fake instead of using different fakes to simulate HTML and PDF documents.
-
Robert Knight authored
-
Robert Knight authored
Move the logic for determining which document type/viewer integration to create out of the annotator entry point and Guest and into a `createIntegration` factory method in annotator/integrations/index.js This reduces the number of places that need to change when we add new integrations, and puts the logic for determining whether a particular integration can be used in the current environment alongside the corresponding implementation.
-
Lyza Danger Gardner authored
Because of the sometimes-arcane nature of grid layouts, it is sometimes necessary to apply definite width values on grid areas (versus `auto`) to prevent content from escaping. This fixes a situation in which very long unbroken quoted excerpts could blow out the column width in the Notebook. See https://css-tricks.com/preventing-a-grid-blowout/
-
Robert Knight authored
This was created to simulate a scenario in VitalSource's book reader, but they changed their reader so that it no longer uses a tall frame.
-
Robert Knight authored
This is a prerequisite for moving to a modern ES-module oriented module bundler such as Rollup. There is one remaining import ('preact/debug') which was not converted because that is conditional, and top-level `import` statements can't be conditional. That might need to use either `import(...)` or a different approach.
-
Robert Knight authored
This required adapting pattern library import paths due to changes in https://github.com/hypothesis/frontend-shared/pull/200.
-
- 29 Sep, 2021 1 commit
-
-
Robert Knight authored
-