diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000000000000000000000000000000000..2b7bafa5fa47672487a998df854e36347be43f58 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env", "@babel/preset-react"] +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000000000000000000000000000000000..0cdbd5053baa592f554a6970d34509f8c6964fa6 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +dist/ +config/ +coverage/ diff --git a/.eslintrc b/.eslintrc index b8f48e4c3b0426f3960e245402a3ddc870552458..4e5af05be9a51f0f56fa8316f5dd7eee98fe5823 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,17 +1,26 @@ { - "extends": "airbnb-base/legacy", + "env": { + "jest/globals": true + }, + "extends": ["airbnb","react-app"], "globals": { - "Mirador": true, - "jQuery": true + "page": true, + "document": true }, + "parser": "babel-eslint", + "plugins": ["jest"], "rules": { - "no-param-reassign": [ - 2, { - "props": true, - "ignorePropertyModificationsFor": [ - "$" - ] + "no-console": "off", + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], + "require-jsdoc": ["error", { + "require": { + "FunctionDeclaration": true, + "MethodDefinition": true, + "ClassDeclaration": true, + "ArrowFunctionExpression": true, + "FunctionExpression": true } - ] + }], + "react/prefer-stateless-function": "off" } } diff --git a/.gitignore b/.gitignore index 70eb458983ac168d5f566e6ce8677c2b89607f5f..e7275d549b84616856341947282a2b97a73beb97 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,4 @@ -.grunt/ -_SpecRunner.html -bkp -css/discovery.css -css/mirador.css -css/jquery-ui-scoped.css -dev.html -discovery.html -js/discovery -node_modules/ -npm-debug.log +dist/ coverage/ -data/ecodices -data/BnF -data/Harvard -build/ -.idea/ -bower_components/ +node_modules/ +package-lock.json diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 1cac5a437400d873eb8bc5adf57795ef80eace29..0000000000000000000000000000000000000000 --- a/.jshintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ -"expr":true -} - diff --git a/.travis.yml b/.travis.yml index ffe6a6071da99808e7b70e2b7b2f6cdd45becf2a..60c41eb1238dd16b1c3045decea20a032f752510 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,5 @@ language: node_js -sudo: false node_js: -- '5' -- 'v6.10.3' -before_install: -- npm install -script: -- npm run travis + - 'node' +before_script: + - npm install diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index bafe2c97d717ee25886f20268a5ff9e9834cfcd4..0000000000000000000000000000000000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,315 +0,0 @@ -module.exports = function(grunt) { - - // ---------- - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks("gruntify-eslint"); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-connect'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-git-describe'); - grunt.loadNpmTasks('grunt-contrib-less'); - grunt.loadNpmTasks('grunt-contrib-cssmin'); - grunt.loadNpmTasks('grunt-contrib-copy'); - grunt.loadNpmTasks('grunt-githooks'); - grunt.loadNpmTasks('grunt-css-selectors'); - - // ---------- - var distribution = 'build/mirador/mirador.js', - minified = 'build/mirador/mirador.min.js', - releaseRoot = '../site-build/built-mirador/', - - // libraries/plugins - vendors = [ - 'node_modules/jquery/dist/jquery.min.js', - 'node_modules/jquery-migrate/dist/jquery-migrate.min.js', - 'node_modules/jquery-ui-dist/jquery-ui.min.js', - 'node_modules/bootstrap/js/modal.js', - 'node_modules/bootstrap/js/transition.js', - 'node_modules/bootbox/bootbox.js', - 'node_modules/jquery.scrollto/jquery.scrollTo.min.js', - 'node_modules/jstree/dist/jstree.min.js', - 'node_modules/qtip2/dist/jquery.qtip.min.js', - 'node_modules/javascript-state-machine/state-machine.min.js', - 'node_modules/tinymce/tinymce.min.js', - 'node_modules/handlebars/dist/handlebars.js', - 'node_modules/openseadragon/build/openseadragon/openseadragon.js', - 'node_modules/d3/d3.min.js', - 'node_modules/jquery-plugin/dist/ba-tiny-pubsub.js', - 'node_modules/urijs/src/URI.min.js', - 'node_modules/mousetrap/mousetrap.min.js', - 'js/lib/isfahan.js', - 'node_modules/paper/dist/paper-core.min.js', - 'node_modules/spectrum-colorpicker/spectrum.js', - 'node_modules/i18next/i18next.min.js', - 'node_modules/i18next-browser-languagedetector/i18nextBrowserLanguageDetector.min.js', - 'node_modules/i18next-xhr-backend/i18nextXHRBackend.min.js', - 'node_modules/simple-pagination.js/jquery.simplePagination.js', - 'js/lib/modernizr.custom.js', - 'node_modules/sanitize-html/dist/sanitize-html.min.js', - 'node_modules/iiif-evented-canvas/dist/iiif-evented-canvas.umd.min.js', - 'node_modules/iiif-layout-functions/dist/iiif-layout-functions.umd.min.js', - 'node_modules/select2/dist/js/select2.full.min.js' - ], - - // source files - sources = [ - 'js/src/mirador.js', - 'js/src/utils/handlebars.js', - 'js/src/*.js', - 'js/src/viewer/*.js', - 'js/src/manifests/*.js', - 'js/src/annotations/*.js', - 'js/src/workspaces/*.js', - 'js/src/widgets/*.js', - 'js/src/utils/*.js' - ]; - - // ---------- - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - - clean: { - build: ['build'], - release: { - src: [releaseRoot], - options: { - force: true - } - } - }, - - concat: { - js: { - options: { - banner: '//! <%= pkg.name %> <%= pkg.version %>\n' + '//! Built on <%= grunt.template.today("yyyy-mm-dd") %>\n', - process: true - }, - src: [ "<banner>" ].concat(vendors, sources), - dest: distribution - }, - css: { - src: [ - 'css/bootstrap.modals.css', - 'css/normalize.css', - 'node_modules/font-awesome/css/font-awesome.min.css', - 'css/jquery-ui-scoped.css', - 'node_modules/jstree/dist/themes/default/style.min.css', - 'css/collection-tree-mod.css', - 'node_modules/qtip2/dist/jquery.qtip.min.css', - 'node_modules/spectrum-colorpicker/spectrum.css', - 'node_modules/select2/dist/css/select2.min.css', - 'css/mirador.css', - 'css/material-icons.css', - 'node_modules/simple-pagination.js/simplePagination.css' - ], - dest: 'build/mirador/css/mirador-combined.css' - } - }, - - less: { - compile: { - files: { - 'css/mirador.css': 'css/less/main.less' - } - } - }, - - cssmin: { - minify: { - src: 'build/mirador/css/mirador-combined.css', - dest: 'build/mirador/css/mirador-combined.min.css' - } - }, - - uglify: { - options: { - preserveComments: 'some', - mangle: false, - sourceMap: true - }, - mirador: { - src: [vendors, sources], - dest: minified - } - }, - - copy: { - main: { - files: [{ - expand: true, - src: 'css/images/**', - dest: 'build/mirador/' - }, { - expand: true, - cwd: 'node_modules/tinymce', - src: 'themes/**', - dest: 'build/mirador' - }, { - expand: true, - cwd: 'node_modules/tinymce', - src: 'skins/**', - dest: 'build/mirador' - }, { - expand: true, - cwd: 'node_modules/tinymce', - src: 'plugins/**', - dest: 'build/mirador' - }, { - expand: true, - src: 'images/**', - dest: 'build/mirador' - }, { - expand: true, - cwd: 'node_modules/font-awesome', - src: 'fonts/*', - dest: 'build/mirador' - }, { - expand: true, - cwd: 'node_modules/material-design-icons/iconfont', - src: 'MaterialIcons*', - dest: 'build/mirador/fonts' - }, { - src: 'js/lib/parse.min.js', - dest: 'build/mirador/parse.min.js' - }, { - expand: true, - src: 'locales/**', - dest: 'build/mirador' - }] - } - }, - - connect: { - server: { - options: { - port: 8000, - base: '.' - } - } - }, - - watch: { - all: { - options: { - livereload: { - options: { livereload: true }, - files: ['build/**/*'] - } - }, - files: [ - 'Gruntfile.js', - 'js/src/*.js', - 'js/src/*/*.js', - 'locales/*/*.json', - 'images/*', - 'css/*.css', - 'css/less/**/*.less', - 'index.html' - ], - tasks: 'dev_build' - } - }, - - eslint: { - options: { - silent: true - }, - src: sources - }, - - jshint: { - options: { - browser: true, - eqeqeq: false, - loopfunc: false, - indent: false, - jshintrc: '.jshintrc', - globals: { - Mirador: true - } - }, - beforeconcat: sources - }, - - 'git-describe': { - build: { - options: { - prop: 'gitInfo' - } - } - }, - - coveralls: { - options: { - src: 'reports/coverage/PhantomJS*/lcov.info', - force: 'true' - }, - ci: { - src: 'reports/coverage/PhantomJS*/lcov.info' - } - }, - - css_selectors: { - options: { - mutations: [{ - prefix: '.mirador-container' - }] - }, - your_target: { - files: { - 'css/jquery-ui-scoped.css': ['css/jquery-ui.min.css'] - } - } - } - }); - - // ---------- - // Copy:release task. - // Copies the contents of the build folder into the release folder. - grunt.registerTask('copy:release', function() { - grunt.file.recurse('build', function(abspath, rootdir, subdir, filename) { - var dest = releaseRoot + - (subdir ? subdir + '/' : '/') + - filename; - - grunt.file.copy(abspath, dest); - }); - }); - // ---------- - // Lint task - grunt.registerTask('lint', ['jshint', 'eslint']); - - // ---------- - // jQueryUI CSS task. - // Scopes all jQueryUI CSS selectors with '.mirador-container'. - grunt.registerTask('jqueryui_css', ['css_selectors']); - - // ---------- - // Build task. - // Cleans out the build folder and builds the code and images into it, checking lint. - grunt.registerTask('build', [ 'clean:build', 'git-describe', 'lint', 'less', 'jqueryui_css', 'concat', 'uglify', 'cssmin', 'copy']); - - // ---------- - // Dev Build task. - // Build, but skip the time-consuming and obscurantist minification and uglification. - grunt.registerTask('dev_build', [ 'clean:build', 'git-describe', 'lint', 'less', 'jqueryui_css', 'concat', 'copy']); - - // ---------- - // Default task. - // Does a normal build. - grunt.registerTask('default', ['build']); - - // ---------- - // Connect task. - // Runs server at specified port - grunt.registerTask('serve', ['dev_build', 'connect:server', 'watch']); - - // ---------- - // Runs this on travis. - grunt.registerTask('ci', [ - 'lint' - ]); -}; diff --git a/LICENSE.md b/LICENSE similarity index 73% rename from LICENSE.md rename to LICENSE index b6d88d4ab5e0df61570e518aa437e35f44fd45e7..b108f546f889bb2445d813a1f6ed6aa306860421 100644 --- a/LICENSE.md +++ b/LICENSE @@ -1,10 +1,10 @@ -Copyright © 2014 The Board of Trustees of the Leland Stanford Junior University +Copyright 2018 The Board of Trustees of the Leland Stanford Junior University Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at -[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/README.md b/README.md index 091b80ee92f20b4abca6219606a0861bfdb42a54..3081cc045533e031045332c39568d5a1f6ef1e82 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,64 @@ -[](https://travis-ci.org/ProjectMirador/mirador?branch=master) -[](http://waffle.io/iiif/mirador) +## Running Mirador locally -# Mirador - -**Mirador is a multi-repository, configurable, extensible, and easy-to-integrate viewer and annotation creation and comparison environment for IIIF resources, ranging from deep-zooming artwork, to complex manuscript objects. It provides a tiling windowed environment for comparing multiple image-based resources, synchronised structural and visual navigation of content using openSeadragon, Open Annotation compliant annotation creation and viewing on deep-zoomable canvases, metadata display, bookreading, and bookmarking.** +1. Run `npm install` to install the dependencies. -### [See a Demo](http://projectmirador.org/demo/) -### [Getting Started](http://projectmirador.org/docs/docs/getting-started.html) +## Starting the project -### Run in Development -Mirador uses [Node.js](https://nodejs.org/) and a build system to assemble, test, and manage the development resources. If you have never used these tools before, you may need to install them. +```sh +$ npm start +``` - 1. Install [Node.js](https://nodejs.org/) - 2. Install the Grunt command line runner i.e. `npm install -g grunt-cli` - 1. Clone the Mirador repository - 1. Change into the Mirador directory - 1. Install all dependencies with `npm install`. Run `npm start`. - -### Run Tests -`npm test` +Then navigate to [http://127.0.0.1:4444/__tests__/integration/mirador/](http://127.0.0.1:4444/__tests__/integration/mirador/) -For more information, see the [Docs](http://projectmirador.org/docs/docs/getting-started.html), submit an [issue](https://github.com/projectmirador/mirador/issues), or ask on [Slack](http://bit.ly/iiif-slack). +### Instantiating Mirador -### Project Diagnostics - [](https://coveralls.io/github/ProjectMirador/mirador?branch=master&upToDate=true) +```javascript +var miradorInstance = Mirador.viewer({ + id: 'mirador' // id selector where Mirador should be instantiated +}); + +> miradorInstance +{ actions, store } +``` + +### Example Action + +Add a window: +```javascript +store.dispatch(actions.addWindow()); +``` + +To focus a window run: + +```javascript +store.dispatch(actions.focusWindow('window-1')) +``` + +### Check current state + +```javascript +store.getState() +``` + +## Running the tests + +```sh +$ npm test # For headless CI=true npm test +``` + +or to continually watch the source files + +```sh +$ npm run test:watch +``` + +## Linting the project + +```sh +$ npm run lint +``` + +## Debugging +Useful browser extensions for debugging/development purposes + - [React DevTools](https://github.com/facebook/react-devtools) + - [Redux DevTools](https://github.com/zalmoxisus/redux-devtools-extension) diff --git a/__tests__/fixtures/2.json b/__tests__/fixtures/2.json new file mode 100644 index 0000000000000000000000000000000000000000..b62a7061aaacec6c3117906d07b1ac7688a9c18c --- /dev/null +++ b/__tests__/fixtures/2.json @@ -0,0 +1,41 @@ +{ + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": "http://iiif.io/api/presentation/2.0/example/fixtures/2/manifest.json", + "@type": "sc:Manifest", + "label": "Test 2 Manifest: Metadata Pairs", + "metadata": [ + { + "label": "date", + "value": "some date" + } + ], + "within": "http://iiif.io/api/presentation/2.0/example/fixtures/collection.json", + "sequences": [ + { + "@type": "sc:Sequence", + "label": "Test 2 Sequence 1", + "canvases": [ + { + "@id": "http://iiif.io/api/presentation/2.0/example/fixtures/canvas/2/c1.json", + "@type": "sc:Canvas", + "label": "Test 2 Canvas: 1", + "height": 1800, + "width": 1200, + "images": [ + { + "@type": "oa:Annotation", + "motivation": "sc:painting", + "resource": { + "@id": "http://iiif.io/api/presentation/2.0/example/fixtures/resources/page1-full.png", + "@type": "dctypes:Image", + "height": 1800, + "width": 1200 + }, + "on": "http://iiif.io/api/presentation/2.0/example/fixtures/canvas/2/c1.json" + } + ] + } + ] + } + ] +} diff --git a/__tests__/fixtures/24.json b/__tests__/fixtures/24.json new file mode 100644 index 0000000000000000000000000000000000000000..d307ecca6584a952a8e97722b20ef9a35c85c6df --- /dev/null +++ b/__tests__/fixtures/24.json @@ -0,0 +1,41 @@ +{ + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": "http://iiif.io/api/presentation/2.0/example/fixtures/24/manifest.json", + "@type": "sc:Manifest", + "label": "Test 24 Manifest: Image with IIIF Service - adapted with real image", + "within": "http://iiif.io/api/presentation/2.0/example/fixtures/collection.json", + "sequences": [ + { + "@type": "sc:Sequence", + "label": "Test 24 Sequence 1", + "canvases": [ + { + "@id": "http://iiif.io/api/presentation/2.0/example/fixtures/canvas/24/c1.json", + "@type": "sc:Canvas", + "label": "Test 24 Canvas: 1", + "height": 1800, + "width": 1200, + "images": [ + { + "@type": "oa:Annotation", + "motivation": "sc:painting", + "resource": { + "@id": "https://stacks.stanford.edu/image/iiif/hg676jb4964%2F0380_796-44/full/full/0/default.jpg", + "@type": "dctypes:Image", + "format": "image/jpeg", + "height": 3820, + "width": 5426, + "service": { + "@context": "http://iiif.io/api/image/2/context.json", + "@id": "https://stacks.stanford.edu/image/iiif/hg676jb4964%2F0380_796-44", + "profile": "http://iiif.io/api/image/2/level2.json" + } + }, + "on": "http://iiif.io/api/presentation/2.0/example/fixtures/canvas/24/c1.json" + } + ] + } + ] + } + ] +} diff --git a/__tests__/integration/mirador/basic.test.js b/__tests__/integration/mirador/basic.test.js new file mode 100644 index 0000000000000000000000000000000000000000..421aa78d4cebe045b39d12569f2b1573f4ee0ecc --- /dev/null +++ b/__tests__/integration/mirador/basic.test.js @@ -0,0 +1,21 @@ +describe('Basic end to end Mirador', () => { + beforeAll(async () => { + await page.goto('http://127.0.0.1:4488/__tests__/integration/mirador/'); + }); + it('has the correct page title', async () => { + const title = await page.title(); + expect(title).toBe('Mirador'); + }); + it('loads a manifest and displays it', async () => { + await expect(page).toFill('#manifestURL', 'https://purl.stanford.edu/sn904cj3429/iiif/manifest'); + await expect(page).toClick('#fetchBtn'); + // TODO: Refactor the app so we get rid of the wait + await page.waitFor(1000); + await expect(page).toMatchElement('li', { text: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest' }); + await expect(page).toMatchElement( + 'h3', + "Peter's San Francisco Locator. The Birds-Eye-View Map of the Exposition City. Published by Locator Publishing Co", + ); + await expect(page).toMatchElement('div', /Color/); + }); +}); diff --git a/__tests__/integration/mirador/config_updating_from_instance.test.js b/__tests__/integration/mirador/config_updating_from_instance.test.js new file mode 100644 index 0000000000000000000000000000000000000000..6190e905366e9b79e6a1db58045b0307d6c52667 --- /dev/null +++ b/__tests__/integration/mirador/config_updating_from_instance.test.js @@ -0,0 +1,17 @@ +/* global miradorInstance */ + +describe('Config updating from instance', () => { + beforeAll(async () => { + await page.goto('http://127.0.0.1:4488/__tests__/integration/mirador/'); + }); + it('can modify the config via api', async () => { + await page.evaluate(() => { + const a = miradorInstance.actions.updateConfig({ foo: 'bat' }); + miradorInstance.store.dispatch(a); + }); + const config = await page.evaluate(() => ( + miradorInstance.store.getState().config + )); + await expect(config.foo).toBe('bat'); + }); +}); diff --git a/__tests__/integration/mirador/index.html b/__tests__/integration/mirador/index.html new file mode 100644 index 0000000000000000000000000000000000000000..baad43c8443d36f967984cbaf95e85cd4d12b662 --- /dev/null +++ b/__tests__/integration/mirador/index.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <meta name="theme-color" content="#000000"> + <title>Mirador</title> + </head> + <body> + <div id="mirador"></div> + <script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script> + <script type="text/javascript"> + var miradorInstance = Mirador.viewer({ + id: 'mirador' + }); + </script> + </body> +</html> diff --git a/__tests__/integration/mirador/plugins.html b/__tests__/integration/mirador/plugins.html new file mode 100644 index 0000000000000000000000000000000000000000..d19bb7095af9a39367083da7f555e913b8c0ee13 --- /dev/null +++ b/__tests__/integration/mirador/plugins.html @@ -0,0 +1,100 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <meta name="theme-color" content="#000000"> + <title>Mirador</title> + </head> + <body> + <div id="mirador"></div> + <script src="../../../node_modules/react/umd/react.development.js"></script> + <script src="../../../node_modules/react-dom/umd/react-dom.development.js"></script> + <script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script> + <script type="text/javascript"> + class MiradorShareButton extends React.Component { + constructor(props) { + super(props); + + this.handleClick = this.handleClick.bind(this); + } + handleClick() { + alert('Share this stuff') + } + render() { + return React.createElement('button', { className: 'share', onClick: this.handleClick}, 'Share'); + } + } + const miradorShareButton = { + name: 'miradorShareButton', + component: MiradorShareButton, + parent: 'WindowTopBarButtons', + } + Mirador.plugins.miradorShareButton = miradorShareButton; + class MiradorRuler extends React.Component { + constructor(props) { + super(props); + this._isMounted = false; + this.state = { + zooming: false, + } + this.zoomToColor = this.zoomToColor.bind(this); + } + componentDidMount() { + this._isMounted = true; + const that = this; + this.props.pluginParent().viewer.addHandler('zoom', (e) => { + if (that._isMounted) { + that.setState({ + zooming: true + }) + } + }) + // Super hacky don't do this for real + function resetStyle() { + if (that._isMounted) { + that.setState({ + zooming: false + }) + } + setTimeout(resetStyle, 750) + } + resetStyle(); + } + componentWillUnmount() { + this._isMounted = false; + if (this.props.pluginParent()) { + this.props.pluginParent().viewer.removeHandler('zoom'); + } + } + zoomToColor(zooming) { + if (zooming) { + return 'red' + } + return 'black' + } + render() { + return React.createElement('div', {className: 'mirador-ruler', style: { position: 'absolute', bottom: 0, color: this.zoomToColor(this.state.zooming)}}, 'I am a ruler') + } + } + const miradorRuler = { + name: 'miradorRuler', + component: MiradorRuler, + parent: 'OpenSeadragonViewer', + mapStateToProps: ({ manifests }, props) => { + return { + manifests // return the part of the state I need here. + } + }, + mapDispatchToProps: (dispatch) => { + return {} + }, + } + Mirador.plugins.miradorRuler = miradorRuler; + var miradorInstance = Mirador.viewer({ + id: 'mirador', + plugins: ['miradorShareButton', 'miradorRuler'] + }); + </script> + </body> +</html> diff --git a/__tests__/integration/mirador/plugins.test.js b/__tests__/integration/mirador/plugins.test.js new file mode 100644 index 0000000000000000000000000000000000000000..5c3e94634e4e9c79da7fbff2e60675fe68bde749 --- /dev/null +++ b/__tests__/integration/mirador/plugins.test.js @@ -0,0 +1,21 @@ +describe('Mirador plugin use', () => { + beforeAll(async () => { + await page.goto('http://127.0.0.1:4488/__tests__/integration/mirador/plugins.html'); + await expect(page).toFill('#manifestURL', 'https://purl.stanford.edu/sn904cj3429/iiif/manifest'); + await expect(page).toClick('#fetchBtn'); + // TODO: Refactor the app so we get rid of the wait + await page.waitFor(1000); + await expect(page).toClick('li button'); + }); + it('displays "Share Button" plugin', async () => { + await expect(page).toMatchElement('button', { text: 'Share' }); + page.on('dialog', async (dialog) => { + expect(dialog.message()).toBe('Share this stuff'); + await dialog.dismiss(); + }); + await expect(page).toClick('button.share'); + }); + it('displays "Ruler" plugin', async () => { + await expect(page).toMatchElement('.mirador-ruler'); + }); +}); diff --git a/__tests__/integration/mirador/window_actions.test.js b/__tests__/integration/mirador/window_actions.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e16d8b4206dc738002ccb6c64f828c386f9bdf4b --- /dev/null +++ b/__tests__/integration/mirador/window_actions.test.js @@ -0,0 +1,15 @@ +describe('Window actions', () => { + beforeAll(async () => { + await page.goto('http://127.0.0.1:4488/__tests__/integration/mirador/'); + }); + it('opens a window and closes it', async () => { + await expect(page).toFill('#manifestURL', 'https://purl.stanford.edu/sn904cj3429/iiif/manifest'); + await expect(page).toClick('#fetchBtn'); + // TODO: Refactor the app so we get rid of the wait + await page.waitFor(1000); + await expect(page).toClick('li button'); + await expect(page).toMatchElement('.mirador-window'); + await expect(page).toClick('.mirador-window-close'); + await expect(page).not.toMatchElement('.mirador-window'); + }); +}); diff --git a/__tests__/integration/vanilla-js.test.js b/__tests__/integration/vanilla-js.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e74fd045d388b8d05f90abdf623b6007a988af72 --- /dev/null +++ b/__tests__/integration/vanilla-js.test.js @@ -0,0 +1,17 @@ +describe('Plain JavaScript example', () => { + beforeAll(async () => { + await page.goto('http://127.0.0.1:4488/__tests__/integration/vanilla-js/'); + }); + it('has the correct page title', async () => { + const title = await page.title(); + expect(title).toBe('Examples'); + }); + it('loads a manifest and displays it', async () => { + await expect(page).toFill('#manifestURL', 'https://purl.stanford.edu/sn904cj3429/iiif/manifest'); + await expect(page).toClick('#fetchBtn'); + // TODO: Refactor the app so we get rid of the wait + await page.waitFor(1000); + const manifest = await page.$eval('#exampleManifest', e => e.innerHTML); + await expect(manifest).toMatch(/http:\/\/iiif\.io\/api\/presentation\/2\/context\.json/); + }); +}); diff --git a/__tests__/integration/vanilla-js/README.md b/__tests__/integration/vanilla-js/README.md new file mode 100644 index 0000000000000000000000000000000000000000..abe90a01e6af8c2423709eabc5bbdbc9c349897b --- /dev/null +++ b/__tests__/integration/vanilla-js/README.md @@ -0,0 +1,8 @@ +## Notes +To load external manifests, you will need to run the example pages from a serve. One easy way to do this is to run PythonHTTPServer: +`python -m SimpleHTTPServer` + +To inspect the Mirador 3 prototype in the web console with (code completion), you can refer to it as: +`m3core` + +This name is found in the `minimal_redux_poc/webpack.config.js` as the value of the `library` property. diff --git a/__tests__/integration/vanilla-js/index.html b/__tests__/integration/vanilla-js/index.html new file mode 100644 index 0000000000000000000000000000000000000000..432e8d0558ed56ebbf57b6a1758edea77066d11d --- /dev/null +++ b/__tests__/integration/vanilla-js/index.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + <title>Examples</title> + <script src="../../../dist/m3core.umd.js"></script> + </head> + <body> + + <input id="manifestURL" type="text"/><button id="fetchBtn" type="submit">Fetch Manifest</button> + <pre id="exampleManifest"> + + </pre> + + <script> + document.getElementById("fetchBtn").addEventListener("click", function(){ + let val = document.getElementById("manifestURL").value; + let f = m3core.actions.fetchManifest(val); + m3core.store.dispatch(f); + }); + + m3core.store.subscribe(() => { + let contents = '' + let state = m3core.store.getState(); + let manifest = state.manifests[document.getElementById("manifestURL").value]; + switch (manifest.isFetching) { + case true: + contents = 'spinner'; + break; + case false: + if(manifest.error){ + contents = manifest.error.message; + } else { + contents = JSON.stringify(manifest.manifestation.__jsonld, 0, 3); + } + break; + default: contents = '' + } + document.getElementById("exampleManifest").innerHTML = contents; + }); + + </script> + </body> +</html> diff --git a/__tests__/src/actions/index.test.js b/__tests__/src/actions/index.test.js new file mode 100644 index 0000000000000000000000000000000000000000..1dd4c73127380b22a29b4a904e46290115d45955 --- /dev/null +++ b/__tests__/src/actions/index.test.js @@ -0,0 +1,209 @@ +import configureMockStore from 'redux-mock-store'; +import thunk from 'redux-thunk'; + +import * as actions from '../../../src/actions/index'; +import ActionTypes from '../../../src/action-types'; + +const middlewares = [thunk]; +const mockStore = configureMockStore(middlewares); + +describe('actions', () => { + describe('addWindow', () => { + it('should create a new window with merged defaults', () => { + const options = { + id: 'helloworld', + canvasIndex: 1, + }; + + const expectedAction = { + type: ActionTypes.ADD_WINDOW, + payload: { + id: 'helloworld', + canvasIndex: 1, + collectionIndex: 0, + manifestId: null, + rangeId: null, + xywh: [0, 0, 400, 400], + rotation: null, + }, + }; + expect(actions.addWindow(options)).toEqual(expectedAction); + }); + }); + describe('removeWindow', () => { + it('removes the window and returns windowId', () => { + const id = 'abc123'; + const expectedAction = { + type: ActionTypes.REMOVE_WINDOW, + windowId: id, + }; + expect(actions.removeWindow(id)).toEqual(expectedAction); + }); + }); + describe('nextCanvas', () => { + it('moves to the next canvas', () => { + const id = 'abc123'; + const expectedAction = { + type: ActionTypes.NEXT_CANVAS, + windowId: id, + }; + expect(actions.nextCanvas(id)).toEqual(expectedAction); + }); + }); + describe('previousCanvas', () => { + it('moves to the previous canvas', () => { + const id = 'abc123'; + const expectedAction = { + type: ActionTypes.PREVIOUS_CANVAS, + windowId: id, + }; + expect(actions.previousCanvas(id)).toEqual(expectedAction); + }); + }); + describe('requestManifest', () => { + it('requests a manifest given a url', () => { + const id = 'abc123'; + const expectedAction = { + type: ActionTypes.REQUEST_MANIFEST, + manifestId: id, + }; + expect(actions.requestManifest(id)).toEqual(expectedAction); + }); + }); + describe('receiveManifest', () => { + it('moves to the previous canvas', () => { + const id = 'abc123'; + const json = { + id, + content: 'lots of metadata, canvases, and other IIIFy things', + }; + const expectedAction = { + type: ActionTypes.RECEIVE_MANIFEST, + manifestId: id, + manifestJson: json, + }; + expect(actions.receiveManifest(id, json)).toEqual(expectedAction); + }); + }); + describe('fetchManifest', () => { + let store = null; + beforeEach(() => { + store = mockStore({}); + }); + describe('success response', () => { + beforeEach(() => { + fetch.mockResponseOnce(JSON.stringify({ data: '12345' })); // eslint-disable-line no-undef + }); + it('dispatches the REQUEST_MANIFEST action', () => { + store.dispatch(actions.fetchManifest('https://purl.stanford.edu/sn904cj3429/iiif/manifest')); + expect(store.getActions()).toEqual([ + { manifestId: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest', type: 'REQUEST_MANIFEST' }, + ]); + }); + it('dispatches the REQUEST_MANIFEST and then RECEIVE_MANIFEST', () => { + store.dispatch(actions.fetchManifest('https://purl.stanford.edu/sn904cj3429/iiif/manifest')) + .then(() => { + const expectedActions = store.getActions(); + expect(expectedActions).toEqual([ + { manifestId: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest', type: 'REQUEST_MANIFEST' }, + { manifestId: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest', manifestJson: { data: '12345' }, type: 'RECEIVE_MANIFEST' }, + ]); + }); + }); + }); + describe('error response', () => { + it('dispatches the REQUEST_MANIFEST and then RECEIVE_MANIFEST', () => { + store.dispatch(actions.fetchManifest('https://purl.stanford.edu/sn904cj3429/iiif/manifest')) + .then(() => { + const expectedActions = store.getActions(); + expect(expectedActions).toEqual([ + { manifestId: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest', type: 'REQUEST_MANIFEST' }, + { manifestId: 'https://purl.stanford.edu/sn904cj3429/iiif/manifest', error: new Error('invalid json response body at undefined reason: Unexpected end of JSON input'), type: 'RECEIVE_MANIFEST_FAILURE' }, + ]); + }); + }); + }); + }); + describe('removeManifest', () => { + it('removes an existing manifest', () => { + const expectedAction = { + type: ActionTypes.REMOVE_MANIFEST, + manifestId: 'foo', + }; + expect(actions.removeManifest('foo')).toEqual(expectedAction); + }); + }); + describe('requestInfoResponse', () => { + it('requests an infoResponse from given a url', () => { + const id = 'abc123'; + const expectedAction = { + type: ActionTypes.REQUEST_INFO_RESPONSE, + infoId: id, + }; + expect(actions.requestInfoResponse(id)).toEqual(expectedAction); + }); + }); + describe('receiveInfoResponse', () => { + it('recieves an infoResponse', () => { + const id = 'abc123'; + const json = { + id, + content: 'image information request', + }; + const expectedAction = { + type: ActionTypes.RECEIVE_INFO_RESPONSE, + infoId: id, + infoJson: json, + }; + expect(actions.receiveInfoResponse(id, json)).toEqual(expectedAction); + }); + }); + describe('fetchInfoResponse', () => { + let store = null; + beforeEach(() => { + store = mockStore({}); + }); + describe('success response', () => { + beforeEach(() => { + fetch.mockResponseOnce(JSON.stringify({ data: '12345' })); // eslint-disable-line no-undef + }); + it('dispatches the REQUEST_MANIFEST action', () => { + store.dispatch(actions.fetchInfoResponse('https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json')); + expect(store.getActions()).toEqual([ + { infoId: 'https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json', type: 'REQUEST_INFO_RESPONSE' }, + ]); + }); + it('dispatches the REQUEST_MANIFEST and then RECEIVE_MANIFEST', () => { + store.dispatch(actions.fetchInfoResponse('https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json')) + .then(() => { + const expectedActions = store.getActions(); + expect(expectedActions).toEqual([ + { infoId: 'https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json', type: 'REQUEST_INFO_RESPONSE' }, + { infoId: 'https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json', infoJson: { data: '12345' }, type: 'RECEIVE_INFO_RESPONSE' }, + ]); + }); + }); + }); + describe('error response', () => { + it('dispatches the REQUEST_INFO_RESPONSE and then RECEIVE_INFO_RESPONSE', () => { + store.dispatch(actions.fetchInfoResponse('https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json')) + .then(() => { + const expectedActions = store.getActions(); + expect(expectedActions).toEqual([ + { infoId: 'https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json', type: 'REQUEST_INFO_RESPONSE' }, + { infoId: 'https://stacks.stanford.edu/image/iiif/sn904cj3429%2F12027000/info.json', error: new Error('invalid json response body at undefined reason: Unexpected end of JSON input'), type: 'RECEIVE_INFO_RESPONSE_FAILURE' }, + ]); + }); + }); + }); + }); + describe('removeInfoResponse', () => { + it('removes an existing infoResponse', () => { + const expectedAction = { + type: ActionTypes.REMOVE_INFO_RESPONSE, + infoId: 'foo', + }; + expect(actions.removeInfoResponse('foo')).toEqual(expectedAction); + }); + }); +}); diff --git a/__tests__/src/components/Display.test.js b/__tests__/src/components/Display.test.js new file mode 100644 index 0000000000000000000000000000000000000000..0ef95154d5265e706f9bf8b22d5789373d80e88a --- /dev/null +++ b/__tests__/src/components/Display.test.js @@ -0,0 +1,29 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import Display from '../../../src/components/Display'; +import ManifestMetadata from '../../../src/components/ManifestMetadata'; +import fixture from '../../fixtures/2.json'; + +describe('Display', () => { + it('renders without an error', () => { + const wrapper = shallow(<Display manifest={{}} />); + expect(wrapper.contains(<div className="Display"><div id="exampleManifest" className=""><ManifestMetadata manifest={{}} /></div></div>)).toBe(true); + }); + it('sets class based on manifest state', () => { + let wrapper = shallow(<Display manifest={{ isFetching: true }} />); + expect(wrapper.find('.mirador-fetching').length).toBe(1); + + wrapper = shallow(<Display manifest={{ error: true }} />); + expect(wrapper.find('.mirador-error').length).toBe(1); + }); + it('displays content', () => { + let wrapper = shallow(<Display manifest={{ isFetching: true }} />); + expect(wrapper.text()).toBe('☕'); + + wrapper = shallow(<Display manifest={{ error: { message: 'bad things' } }} />); + expect(wrapper.text()).toBe('bad things'); + + wrapper = shallow(<Display manifest={{ json: fixture }} />); + expect(wrapper.find(ManifestMetadata).length).toBe(1); + }); +}); diff --git a/__tests__/src/components/ManifestListItem.test.js b/__tests__/src/components/ManifestListItem.test.js new file mode 100644 index 0000000000000000000000000000000000000000..2be1cd2218fd179df06542eefbea5ead915ca256 --- /dev/null +++ b/__tests__/src/components/ManifestListItem.test.js @@ -0,0 +1,19 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import { store } from '../../../src/store'; +import ManifestListItem from '../../../src/components/ManifestListItem'; + +describe('ManifestListItem', () => { + it('renders without an error', () => { + const wrapper = shallow(<ManifestListItem manifest="http://example.com" store={store} />).dive(); + expect(wrapper.find('li.mirador-manifest-list-item').length).toBe(1); + expect(wrapper.find('button').length).toBe(1); + expect(wrapper.find('button').text()).toEqual('http://example.com'); + }); + it('updates and adds window when button clicked', () => { + const wrapper = shallow(<ManifestListItem manifest="http://example.com" store={store} />).dive(); + expect(store.getState().windows.length).toEqual(0); + wrapper.find('button').simulate('click'); + expect(store.getState().windows.length).toEqual(1); + }); +}); diff --git a/__tests__/src/components/ManifestMetadata.test.js b/__tests__/src/components/ManifestMetadata.test.js new file mode 100644 index 0000000000000000000000000000000000000000..404ab7c47741ce9b68a86ee7f0761446e3e86352 --- /dev/null +++ b/__tests__/src/components/ManifestMetadata.test.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import ManifestMetadata from '../../../src/components/ManifestMetadata'; +import fixture from '../../fixtures/2.json'; + +describe('ManifestMetadata', () => { + let wrapper; + let manifest; + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + manifest = store.getState().manifests.foo; + wrapper = shallow(<ManifestMetadata manifest={manifest} />); + }); + + it('renders without an error', () => { + expect(wrapper.find('h3').text()).toBe('Test 2 Manifest: Metadata Pairs'); + expect(wrapper.find('.mirador-description').length).toBe(1); + }); +}); diff --git a/__tests__/src/components/Window.test.js b/__tests__/src/components/Window.test.js new file mode 100644 index 0000000000000000000000000000000000000000..deedb4a02ed0cdc508df53b18d5d9f8a46c01608 --- /dev/null +++ b/__tests__/src/components/Window.test.js @@ -0,0 +1,67 @@ +import React from 'react'; +import { mount, shallow } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import Window from '../../../src/components/Window'; +import fixture from '../../fixtures/24.json'; + +describe('Window', () => { + let wrapper; + let window; + describe('with a manifest present', () => { + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + [window] = store.getState().windows; + wrapper = mount( + <Window store={store} id={window.id} />, + // We need to attach this to something created by our JSDOM instance. + // Also need to provide context of the store so that connected sub components + // can render effectively. + { attachTo: document.getElementById('main'), context: { store } }, + ); + }); + + afterEach(() => { + store.dispatch(actions.removeManifest('foo')); + }); + + it('returns the width and height style attribute', () => { + wrapper = shallow(<Window store={store} id={window.id} />, { context: { store } }); + expect(wrapper.dive().instance().styleAttributes()) + .toEqual({ width: '400px', height: '400px' }); + }); + + it('renders without an error', () => { + expect(wrapper.find('.mirador-window').prop('style')).toHaveProperty('width', '400px'); + expect(wrapper.find('.mirador-window').prop('style')).toHaveProperty('height', '400px'); + expect(wrapper.find('div.mirador-window').length).toBe(1); + expect(wrapper.find('div.mirador-window img').prop('src')).toBe('http://placekitten.com/200/300'); + }); + + it('renders the viewer', () => { + expect(wrapper.find('WindowViewer').length).toBe(1); + }); + }); + describe('without a manifest present', () => { + beforeEach(() => { + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + [window] = store.getState().windows; + wrapper = shallow(<Window store={store} id={window.id} />, { context: { store } }).dive(); + }); + + it('returns the width and height style attribute', () => { + expect(wrapper.instance().styleAttributes()) + .toEqual({ width: '400px', height: '400px' }); + }); + + it('renders without an error', () => { + expect(wrapper.find('.mirador-window').prop('style')).toHaveProperty('width', '400px'); + expect(wrapper.find('.mirador-window').prop('style')).toHaveProperty('height', '400px'); + expect(wrapper.find('div.mirador-window img').length).toBe(0); + }); + + it('does not render the viewer', () => { + expect(wrapper.find('WindowViewer').length).toBe(0); + }); + }); +}); diff --git a/__tests__/src/components/WindowBackground.test.js b/__tests__/src/components/WindowBackground.test.js new file mode 100644 index 0000000000000000000000000000000000000000..f3fe49abf9c40a65321ae5c3756756aaea7f392c --- /dev/null +++ b/__tests__/src/components/WindowBackground.test.js @@ -0,0 +1,23 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import WindowBackground from '../../../src/components/WindowBackground'; +import fixture from '../../fixtures/24.json'; + +describe('WindowBackground', () => { + let wrapper; + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + const manifest = store.getState().manifests.foo; + wrapper = shallow(<WindowBackground manifest={manifest} />); + }); + + it('renders without an error', () => { + expect(wrapper.find('img').prop('src')).toBe('http://placekitten.com/200/300'); + }); + + it('without a manifest, renders an empty', () => { + expect(shallow(<WindowBackground manifest={null} />).html()).toBe('<div></div>'); + }); +}); diff --git a/__tests__/src/components/WindowTopBar.test.js b/__tests__/src/components/WindowTopBar.test.js new file mode 100644 index 0000000000000000000000000000000000000000..c03aeae9695da95d4bf727b3e77d1ba55ccc543f --- /dev/null +++ b/__tests__/src/components/WindowTopBar.test.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import WindowTopBar from '../../../src/components/WindowTopBar'; +import fixture from '../../fixtures/24.json'; + +describe('Window', () => { + let wrapper; + let window; + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + const manifest = store.getState().manifests.foo; + [window] = store.getState().windows; + wrapper = mount( + <WindowTopBar store={store} manifest={manifest} windowId={window.id} />, + // We need to attach this to something created by our JSDOM instance. + // Also need to provide context of the store so that connected sub components + // can render effectively. + { attachTo: document.getElementById('main'), context: { store } }, + ); + }); + + it('renders without an error', () => { + expect(wrapper.find('div.mirador-window-top-bar h3').text()).toBe('Test 24 Manifest: Image with IIIF Service - adapted with real image'); + expect(wrapper.find('button.mirador-window-close')); + }); +}); diff --git a/__tests__/src/components/WindowViewer.test.js b/__tests__/src/components/WindowViewer.test.js new file mode 100644 index 0000000000000000000000000000000000000000..2bed4303aa1be9c591fa3df8d8a0b33db9605b0d --- /dev/null +++ b/__tests__/src/components/WindowViewer.test.js @@ -0,0 +1,32 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import WindowViewer from '../../../src/components/WindowViewer'; +import fixture from '../../fixtures/24.json'; + +describe('WindowViewer', () => { + let wrapper; + let window; + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + const manifest = store.getState().manifests.foo; + [window] = store.getState().windows; + wrapper = mount( + <WindowViewer manifest={manifest} window={window} />, + // We need to attach this to something created by our JSDOM instance. + // Also need to provide context of the store so that connected sub components + // can render effectively. + { attachTo: document.getElementById('main'), context: { store } }, + ); + }); + + it('OpenSeaDragon instantiates', () => { + // Hacky as heck thing we have to do, as `#find` (and other methods on ReactWrapper) + // do not effectively find elements (even though they are there) + expect(wrapper.render().find('.openseadragon-canvas').length).toBe(1); + }); + it('has navigation controls', () => { + expect(wrapper.find('.mirador-osd-navigation').length).toBe(1); + }); +}); diff --git a/__tests__/src/components/Workspace.test.js b/__tests__/src/components/Workspace.test.js new file mode 100644 index 0000000000000000000000000000000000000000..c93549885a40ad040d261befa94b8ae94aa825a5 --- /dev/null +++ b/__tests__/src/components/Workspace.test.js @@ -0,0 +1,20 @@ +import React from 'react'; +import { shallow } from 'enzyme'; +import { actions, store } from '../../../src/store'; +import Workspace from '../../../src/components/Workspace'; +import fixture from '../../fixtures/2.json'; + +describe('Workspace', () => { + let wrapper; + beforeEach(() => { + store.dispatch(actions.receiveManifest('foo', fixture)); + store.dispatch(actions.addWindow({ manifestId: 'foo' })); + wrapper = shallow(<Workspace store={store} />).dive(); + }); + + it('renders without an error', () => { + const window = store.getState().windows[0]; + expect(wrapper.find('div.mirador-workspace').length).toBe(1); + expect(wrapper.find(`#${window.id}`).length).toBe(1); + }); +}); diff --git a/__tests__/src/reducers/config.test.js b/__tests__/src/reducers/config.test.js new file mode 100644 index 0000000000000000000000000000000000000000..11836e06ef338f4cf4272d39f594a07e0d7c2f71 --- /dev/null +++ b/__tests__/src/reducers/config.test.js @@ -0,0 +1,42 @@ +import reducer from '../../../src/reducers/config'; +import ActionTypes from '../../../src/action-types'; + +describe('config reducer', () => { + describe('SET_CONFIG', () => { + it('should handle SET_CONFIG', () => { + expect(reducer({}, { + type: ActionTypes.SET_CONFIG, + config: { manifestVersion: 'v3' }, + })).toEqual({ + manifestVersion: 'v3', + }); + }); + it('does not deep merge', () => { + expect(reducer({ stuff: { foo: 'bar' } }, { + type: ActionTypes.SET_CONFIG, + config: { stuff: { foo: 'bat' } }, + })).toEqual({ + stuff: { foo: 'bat' }, + }); + }); + }); + describe('UPDATE_CONFIG', () => { + it('should handle UPDATE_CONFIG', () => { + expect(reducer({}, { + type: ActionTypes.UPDATE_CONFIG, + config: { manifestVersion: 'v3' }, + })).toEqual({ + manifestVersion: 'v3', + }); + }); + it('does a deep merge', () => { + expect(reducer({ stuff: { foo: 'bar' }, hello: 'world' }, { + type: ActionTypes.UPDATE_CONFIG, + config: { stuff: { foo: 'bat' } }, + })).toEqual({ + stuff: { foo: 'bat' }, + hello: 'world', + }); + }); + }); +}); diff --git a/__tests__/src/reducers/infoResponse.test.js b/__tests__/src/reducers/infoResponse.test.js new file mode 100644 index 0000000000000000000000000000000000000000..7841eb8b5e882383bbc88822d720f92afc38558c --- /dev/null +++ b/__tests__/src/reducers/infoResponse.test.js @@ -0,0 +1,70 @@ +import reducer from '../../../src/reducers/infoResponses'; +import ActionTypes from '../../../src/action-types'; + +describe('manifests reducer', () => { + it('should handle REQUEST_INFO_RESPONSE', () => { + expect(reducer({}, { + type: ActionTypes.REQUEST_INFO_RESPONSE, + infoId: 'abc123', + })).toEqual({ + abc123: { + isFetching: true, + }, + }); + }); + it('should handle RECEIVE_INFO_RESPONSE', () => { + expect(reducer( + { + abc123: { + isFetching: true, + }, + }, + { + type: ActionTypes.RECEIVE_INFO_RESPONSE, + infoId: 'abc123', + infoJson: { + id: 'abc123', + '@type': 'sc:Manifest', + content: 'lots of canvases and metadata and such', + }, + }, + )).toMatchObject({ + abc123: { + isFetching: false, + json: {}, + }, + }); + }); + it('should handle RECEIVE_INFO_RESPONSE_FAILURE', () => { + expect(reducer( + { + abc123: { + isFetching: true, + }, + }, + { + type: ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE, + infoId: 'abc123', + error: "This institution didn't enable CORS.", + }, + )).toEqual({ + abc123: { + isFetching: false, + error: "This institution didn't enable CORS.", + }, + }); + }); + it('should handle REMOVE_INFO_RESPONSE', () => { + expect(reducer( + { + abc123: { + stuff: 'foo', + }, + }, + { + type: ActionTypes.REMOVE_INFO_RESPONSE, + infoId: 'abc123', + }, + )).toEqual({}); + }); +}); diff --git a/__tests__/src/reducers/manifests.test.js b/__tests__/src/reducers/manifests.test.js new file mode 100644 index 0000000000000000000000000000000000000000..88e14f61bb441e076d6b4b1057e35261af9cc3a4 --- /dev/null +++ b/__tests__/src/reducers/manifests.test.js @@ -0,0 +1,70 @@ +import reducer from '../../../src/reducers/manifests'; +import ActionTypes from '../../../src/action-types'; + +describe('manifests reducer', () => { + it('should handle REQUEST_MANIFEST', () => { + expect(reducer({}, { + type: ActionTypes.REQUEST_MANIFEST, + manifestId: 'abc123', + })).toEqual({ + abc123: { + isFetching: true, + }, + }); + }); + it('should handle RECEIVE_MANIFEST', () => { + expect(reducer( + { + abc123: { + isFetching: true, + }, + }, + { + type: ActionTypes.RECEIVE_MANIFEST, + manifestId: 'abc123', + manifestJson: { + id: 'abc123', + '@type': 'sc:Manifest', + content: 'lots of canvases and metadata and such', + }, + }, + )).toMatchObject({ + abc123: { + isFetching: false, + manifestation: {}, + }, + }); + }); + it('should handle RECEIVE_MANIFEST_FAILURE', () => { + expect(reducer( + { + abc123: { + isFetching: true, + }, + }, + { + type: ActionTypes.RECEIVE_MANIFEST_FAILURE, + manifestId: 'abc123', + error: "This institution didn't enable CORS.", + }, + )).toEqual({ + abc123: { + isFetching: false, + error: "This institution didn't enable CORS.", + }, + }); + }); + it('should handle REMOVE_MANIFEST', () => { + expect(reducer( + { + abc123: { + stuff: 'foo', + }, + }, + { + type: ActionTypes.REMOVE_MANIFEST, + manifestId: 'abc123', + }, + )).toEqual({}); + }); +}); diff --git a/__tests__/src/reducers/windows.test.js b/__tests__/src/reducers/windows.test.js new file mode 100644 index 0000000000000000000000000000000000000000..a4d485654395cbe83efa46e7533113bb572e4221 --- /dev/null +++ b/__tests__/src/reducers/windows.test.js @@ -0,0 +1,54 @@ +import reducer from '../../../src/reducers/windows'; +import ActionTypes from '../../../src/action-types'; + +describe('windows reducer', () => { + it('should handle ADD_WINDOW', () => { + expect(reducer([], { + type: ActionTypes.ADD_WINDOW, + })).toEqual([ + {}, + ]); + }); + it('should handle REMOVE_WINDOW', () => { + expect(reducer([ + { + id: 'abc123', + }, + ], { + type: ActionTypes.REMOVE_WINDOW, + windowId: 'abc123', + })).toEqual([]); + }); + it('should handle NEXT_CANVAS', () => { + expect(reducer([ + { + id: 'abc123', + canvasIndex: 1, + }, + ], { + type: ActionTypes.NEXT_CANVAS, + windowId: 'abc123', + })).toEqual([ + { + id: 'abc123', + canvasIndex: 2, + }, + ]); + }); + it('should handle PREVIOUS_CANVAS', () => { + expect(reducer([ + { + id: 'abc123', + canvasIndex: 4, + }, + ], { + type: ActionTypes.PREVIOUS_CANVAS, + windowId: 'abc123', + })).toEqual([ + { + id: 'abc123', + canvasIndex: 3, + }, + ]); + }); +}); diff --git a/__tests__/src/reducers/workspace.test.js b/__tests__/src/reducers/workspace.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e1e24a7fd857c4254e389bfd9f0ba42e91d5f26f --- /dev/null +++ b/__tests__/src/reducers/workspace.test.js @@ -0,0 +1,13 @@ +import reducer from '../../../src/reducers/workspace'; +import ActionTypes from '../../../src/action-types'; + +describe('workspace reducer', () => { + it('should handle FOCUS_WINDOW', () => { + expect(reducer([], { + type: ActionTypes.FOCUS_WINDOW, + windowId: 'abc123', + })).toEqual({ + focusedWindowId: 'abc123', + }); + }); +}); diff --git a/bin/create_release.sh b/bin/create_release.sh deleted file mode 100755 index 2ddb634aa0fe8dec628bbb2393d7db0c9a8f601a..0000000000000000000000000000000000000000 --- a/bin/create_release.sh +++ /dev/null @@ -1,31 +0,0 @@ -# remove previous packages -rm -rf build dist - -# build package -node_modules/.bin/grunt build - -# mk tmp release dir -mkdir -p build/tmp/build/mirador - -# copy mirador build into tmp folder -cp -r build/mirador/* build/tmp/build/mirador - -# add example(s) -cp examples/example.html build/tmp/build - -cd build/tmp - -# zip it up -zip -r build/build.zip build/ -mv build/build.zip ../ - -tar -czvf build/build.tar.gz build/ -mv build/build.tar.gz ../ - -# remove temporary files -cd .. && rm -rf tmp - -# make npm dist directory -cd .. -mkdir dist -cp -r build/mirador/* dist diff --git a/bin/update_demo.sh b/bin/update_demo.sh deleted file mode 100755 index 0b5aea569ef9560b140dfd2b9aa64fa11804dc8b..0000000000000000000000000000000000000000 --- a/bin/update_demo.sh +++ /dev/null @@ -1,44 +0,0 @@ -# remove previous packages -rm -rf build/mirador* - -# build package -node_modules/.bin/grunt build - -# mk tmp release dir -mkdir build/tmp - -# unzip build -unzip build/mirador.zip -d build/tmp - -# checkout github pages -git checkout gh-pages - -# remove directories -rm -rf demo/css demo/fonts demo/images demo/locales demo/plugins demo/skins demo/themes - -# copy over new directories -cp -R build/tmp/mirador/css demo -cp -R build/tmp/mirador/fonts demo -cp -R build/tmp/mirador/images demo -cp -R build/tmp/mirador/locales demo -cp -R build/tmp/mirador/plugins demo -cp -R build/tmp/mirador/skins demo -cp -R build/tmp/mirador/themes demo - -# Copy over files -cp build/tmp/mirador/mirador.min.js demo -cp build/tmp/mirador/mirador.js demo -cp build/tmp/mirador/ZeroClipboard.swf demo - -# Clean up extra files -rm demo/css/mirador-combined.css - -# Clean up unpacked build -rm -rf build/tmp - -# Add and commit demo files -git add demo/ -git commit -m 'update demo' -git push origin gh-pages - -git checkout - diff --git a/book.json b/book.json deleted file mode 100644 index c760d8ef5c0c9c239d2372f287d00e979494bdaa..0000000000000000000000000000000000000000 --- a/book.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "structure": { - "summary": "docs/SUMMARY.md" - }, - "plugins": ["-search"] -} diff --git a/bower.json b/bower.json deleted file mode 100644 index de99abbdaa3514462aa48b5185b184a6aece6980..0000000000000000000000000000000000000000 --- a/bower.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "mirador", - "version": "2.1.2", - "homepage": "https://github.com/ProjectMirador/mirador", - "authors": [ - "aeschylus <scipioaffricanus@gmail.com>" - ], - "description": "An image viewer for IIIF resources.", - "main": "mirador.js", - "keywords": [ - "IIIF" - ], - "license": "Apache 2", - "private": false, - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "dependencies": { - }, - "resolutions": { - "jquery": ">=1.7.2" - } -} diff --git a/config/paths.js b/config/paths.js new file mode 100644 index 0000000000000000000000000000000000000000..2060badce016cbe023d2af06e9a9015114a77858 --- /dev/null +++ b/config/paths.js @@ -0,0 +1,98 @@ +const path = require('path'); +const fs = require('fs'); +const url = require('url'); + +// Make sure any symlinks in the project folder are resolved: +// https://github.com/facebook/create-react-app/issues/637 +const appDirectory = fs.realpathSync(process.cwd()); + +/** + * + * @param relativePath + * @returns {string} + */ +const resolveApp = relativePath => path.resolve(appDirectory, relativePath); + +const envPublicUrl = process.env.PUBLIC_URL; + +/** + * + * @param inputPath + * @param needsSlash + * @returns {*} + */ +function ensureSlash(inputPath, needsSlash) { + const hasSlash = inputPath.endsWith('/'); + if (hasSlash && !needsSlash) { + return inputPath.substr(0, inputPath.length - 1); + } else if (!hasSlash && needsSlash) { + return `${inputPath}/`; + } else { + return inputPath; + } +} + +/** + * + * @param appPackageJson + * @returns {string | *} + */ +const getPublicUrl = appPackageJson => envPublicUrl || require(appPackageJson).homepage; + +/** + * + * @param appPackageJson + * @returns {*} + */ +function getServedPath(appPackageJson) { + const publicUrl = getPublicUrl(appPackageJson); + const servedUrl = + envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : '/'); + return ensureSlash(servedUrl, true); +} + +const moduleFileExtensions = [ + 'web.mjs', + 'mjs', + 'web.js', + 'js', + 'web.ts', + 'ts', + 'web.tsx', + 'tsx', + 'json', + 'web.jsx', + 'jsx', +]; + +/** + * + * @param resolveFn + * @param filePath + * @returns {*} + */ +const resolveModule = (resolveFn, filePath) => { + const extension = moduleFileExtensions.find(extension => fs.existsSync(resolveFn(`${filePath}.${extension}`))); + + if (extension) { + return resolveFn(`${filePath}.${extension}`); + } + + return resolveFn(`${filePath}.js`); +}; + +module.exports = { + dotenv: resolveApp('.env'), + appPath: resolveApp('.'), + appBuild: resolveApp('build'), + appDist: resolveApp('dist'), + appIndexJs: resolveModule(resolveApp, 'src/index'), + appPackageJson: resolveApp('package.json'), + appSrc: resolveApp('src'), + testsSetup: resolveModule(resolveApp, 'src/setupTests'), + appNodeModules: resolveApp('node_modules'), + publicUrl: getPublicUrl(resolveApp('package.json')), + servedPath: getServedPath(resolveApp('package.json')), +}; + +module.exports.moduleFileExtensions = moduleFileExtensions; diff --git a/css/bootstrap.modals.css b/css/bootstrap.modals.css deleted file mode 100644 index 1935f0c486df39cc5e22e46626f91735854fc2f6..0000000000000000000000000000000000000000 --- a/css/bootstrap.modals.css +++ /dev/null @@ -1,753 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -[role="button"] { - cursor: pointer; -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333333; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #333333; - background-color: #ffffff; - border-color: #cccccc; -} -.btn-default:focus, -.btn-default.focus { - color: #333333; - background-color: #e6e6e6; - border-color: #8c8c8c; -} -.btn-default:hover { - color: #333333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #333333; - background-color: #d4d4d4; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #ffffff; - border-color: #cccccc; -} -.btn-default .badge { - color: #ffffff; - background-color: #333333; -} -.btn-primary { - color: #ffffff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #286090; - border-color: #122b40; -} -.btn-primary:hover { - color: #ffffff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #204d74; - border-color: #122b40; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #449d44; - border-color: #255625; -} -.btn-success:hover { - color: #ffffff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #398439; - border-color: #255625; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #ffffff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #269abc; - border-color: #1b6d85; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #ffffff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #d58512; - border-color: #985f0d; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #ffffff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #ac2925; - border-color: #761c19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-link { - color: #337ab7; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; -} -.btn-lg { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - -o-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - -webkit-background-clip: padding-box; - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.clearfix:before, -.clearfix:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} \ No newline at end of file diff --git a/css/jquery-ui.min.css b/css/jquery-ui.min.css deleted file mode 100644 index 845625d5c233782341637d42d945ce5a690d396e..0000000000000000000000000000000000000000 --- a/css/jquery-ui.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2016-04-08 -* http://jqueryui.com -* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/ -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/css/less/full-screen.less b/css/less/full-screen.less deleted file mode 100644 index 42c60be4b16dff4675ee66271e948827ffc85ea9..0000000000000000000000000000000000000000 --- a/css/less/full-screen.less +++ /dev/null @@ -1,18 +0,0 @@ -.mirador-container { - /* Full screen - -------------------------------------------------------------------------- */ - &:-webkit-full-screen, - &:-moz-full-screen - &:-ms-fullscreen, - &:fullscreen, - :-webkit-full-screen, - :-moz-full-screen - :-ms-fullscreen, - :fullscreen { - height: 100%; - left: 0; - margin: 0; - top: 0; - width: 100%; - } -} diff --git a/css/less/global.less b/css/less/global.less deleted file mode 100644 index 399818cd096d1365300eb267677cd858b6cc94f5..0000000000000000000000000000000000000000 --- a/css/less/global.less +++ /dev/null @@ -1,183 +0,0 @@ -/** - * Styles which apply globally or do not really belong to any other - * particular .less file. - */ - -// mirador-container is the class assigned to the root element that -// contains all other mirador elements, -// e.g., .mirador-viewer and .mirador-main-menu. -.mirador-container { - a { - color: inherit; /* blue colors for links too */ - text-decoration: inherit; /* no underline */ - } - - // initial loader - .mirador-loading { - background-color: @white; - border: 1px solid @gray-99; - padding: 20px; - } - - .mirador-btn { - cursor: pointer; - display: inline-block; - height: 20px; - width: 20px; - margin-top: 9px; - /*margin-left: 3px;*/ - - &.disabled { - opacity: 0.5; - } - } - - .disabled { - opacity: 0.5; - pointer-events: none; - } - - a.mirador-icon-annotations [class^="icon-"] { - display:block; - position:absolute; - } - - - a.mirador-icon-view-type [class^="icon-"] { - display:block; - position:absolute; - } - - a.mirador-icon-empty-slot [class^="icon-"] { - display:block; - position:absolute; - } - - .mirador-viewer { - position: absolute; - top: 33px; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; - box-sizing: border-box; - -moz-border-sizing: border-box; - margin: 0; - padding: 0; - border: 0; - } - - - .mirador-viewer a.mirador-icon-annotations { - background: none; - color: @gray-91; - box-sizing: border-box; - - &:hover { - color: @black; - } - } - - .mirador-viewer ul.dropdown { - display: none; - width: 160px; - z-index: 3; - opacity: 0.98; - background-color: @gray-ef; - text-align: center; - list-style: none; - position: absolute; - padding:0; - margin-top:10px; - height: auto; - box-shadow: 0px 2px 4px @gray-b1; - border: 1px solid @gray-b1; - } - - .mirador-viewer .dropdown li { - margin:0; - cursor: pointer; - box-sizing: border-box; - background-color: @gray-dd; - padding: 10px; - width:100%; - text-align:left; - - &:hover { - border-left: 3px solid @deep-sky-blue; - background-color: #dddddd; - padding-left: 7px; - font-weight: bold; - } - } - - .mirador-viewer a.mirador-icon-view-type, - .mirador-viewer a.mirador-icon-metadata-view, - .mirador-viewer a.mirador-osd-fullscreen { - background: none; - color: @gray-91; - box-sizing: border-box; - margin-right:5px; - padding-bottom:30px; - } - - .mirador-viewer a.mirador-icon-window-menu, - .mirador-viewer a.mirador-icon-toc, - .mirador-viewer a.mirador-close-window { - float:left; - background: none; - color: @gray-91; - box-sizing: border-box; - margin-left:5px; - padding-bottom:30px; - } - - a.mirador-icon-window-menu, - a.mirador-icon-view-type { - width: 30px; - } - - .mirador-viewer a.mirador-icon-view-type:hover, - .mirador-viewer a.mirador-icon-metadata-view:hover, - .mirador-viewer a.mirador-icon-empty-slot:hover, - .mirador-viewer a.mirador-icon-window-menu:hover, - .mirador-viewer a.mirador-icon-toc:hover, - .mirador-viewer a.mirador-osd-fullscreen:hover { - color: @black; - } - - .mirador-viewer a.mirador-icon-view-type.selected, - .mirador-viewer a.mirador-icon-toc.selected, - .mirador-viewer a.mirador-icon-metadata-view.selected { - color: @black; - } - - .mirador-viewer a.mirador-icon-copy { - background: none; - /*color: @gray-91;*/ - box-sizing: border-box; - } - - input[type="submit"], - input[type="text"] { - height:25px; - border:1px solid @light-gray; - transition: border-color 0.3s ease-out; - } - - input:focus { - outline: none; - border-color: @deep-sky-blue; - } - - input[type="submit"] { - color: gray; - background: @white; - } - - input[type="submit"]:hover { - outline: none; - border-color: @deep-sky-blue; - color: @black-33; - } -} diff --git a/css/less/main-menu.less b/css/less/main-menu.less deleted file mode 100644 index 464dcee1e538df658ed460603d7ad582536bcef1..0000000000000000000000000000000000000000 --- a/css/less/main-menu.less +++ /dev/null @@ -1,94 +0,0 @@ -.mirador-container { - .mirador-main-menu-bar { - background-color: @black; - border-bottom: 1px solid @gray-55; - color: @white; - height: 33px; - width: 100%; - /*padding: 4px;*/ - font-size: 14px; - top: 0; - - .window-options-menu { - position: relative; - border-radius: 0; - display: none; - /*z-index: 10000;*/ - } - } - - .mirador-main-menu { - float: right; - list-style: none; - margin: 0; - padding: 8px 12px 0 0; - text-align: right; - - li { - cursor: pointer; - float: left; - padding: 0 15px; - } - - a { - color: @white; - font-weight: normal; - text-decoration: none; - opacity: 0.6; - - &:hover { - opacity: 1; - } - - &:active { - opacity: 1; - border-bottom: 2px solid @deep-sky-blue; - } - } - - /* a:focus { - border-bottom: 2px solid deepskyblue; - outline: none; - }*/ - } - - .mirador-main-menu.user-buttons { - padding-right: 0; - } - - .mirador-main-menu.user-logo { - padding-right: 0; - padding-left: 0; - float: left; - } - - .mirador-window-options-menu { - list-style: none; - margin: 0; - padding: 10px 5px; - - li { - cursor: pointer; - padding: 3px 5px; - } - } - - .window-manifest-title { - text-overflow: ellipsis; - max-width: 80%; - overflow: hidden; - white-space: nowrap; - padding-left: 10px; - margin: 8px 0px 8px 0px; - font-weight: bold; - font-size: 16px; - } - - .window-manifest-navigation { - float: right; - width: 24%; - text-align: right; - padding-right: 10px; - font-size: 16px; - } -} diff --git a/css/less/main.less b/css/less/main.less deleted file mode 100644 index 37d42d4a4033c1f41fd65f728102cdad05092938..0000000000000000000000000000000000000000 --- a/css/less/main.less +++ /dev/null @@ -1,28 +0,0 @@ -/** - * This file is the entry point for Less processing - */ -@import 'mixins'; -@import 'theme/colors'; -@import 'theme/fonts'; -@import 'overrides/jquery'; -@import 'overrides/qtip'; -@import 'global'; -@import 'full-screen'; -@import 'workspace'; -@import 'main-menu'; -@import 'status-bar'; -@import 'window'; -@import 'osd-hud'; -@import 'views/image-view'; -@import 'views/scroll-view'; -@import 'views/gallery-view'; -@import 'panels/manifest-select-menu'; -@import 'panels/workspace-select-menu'; -@import 'panels/side-panel'; -@import 'panels/annotation-list'; -@import 'panels/bookmark-panel'; -@import 'panels/metadata-view'; -@import 'panels/bottom-panel'; -@import 'panels/layers-tab'; -@import 'panels/search-tab'; -@import 'panels/collection-tree-mod'; diff --git a/css/less/mixins.less b/css/less/mixins.less deleted file mode 100644 index f64330a93f69aba8b2eb312b0cd05e0fe3d57c2b..0000000000000000000000000000000000000000 --- a/css/less/mixins.less +++ /dev/null @@ -1,6 +0,0 @@ -// use () to avoid outputting this in the stylesheet. -.clearfix() { - zoom:1; - &:before, &:after{ content:""; display:table; } - &:after{ clear: both; } -} \ No newline at end of file diff --git a/css/less/osd-hud.less b/css/less/osd-hud.less deleted file mode 100644 index 5c30f0e6a285dbdf39d63c2aa86c14442538b004..0000000000000000000000000000000000000000 --- a/css/less/osd-hud.less +++ /dev/null @@ -1,304 +0,0 @@ -.mirador-container { - /* Disable outlines when canvas is focused - ---------------------------------------------------------------------------- */ - canvas { - outline: none; - -webkit-tap-highlight-color: @transparent; /* mobile webkit */ - } - - .mirador-osd { - background-color: @black; - width: 100%; - height: 100%; - } - - /* Canvas HUD - ----------------------- */ - /*.mirador-canvas-hud { - position:absolute; - left: 0; - top:0; - bottom:0; - right:0; - background: rgba(255, 0, 128, 0.5); - pointer-events: none; - }*/ - .hud-control { - color:white; - text-shadow: 0 0 5px @black; - /*transition: all 0.3s ease;*/ - opacity: 0.6; - font-size: 18px; - z-index:2; - } - .hud-container { - color:white; - text-shadow: 0 0 5px @black; - transition: all 0.3s ease; - font-size: 18px; - z-index:2; - } - .hud-control.hud-disabled { - opacity: 0.3; - } - .hud-control:not(.hud-disabled):hover { - /*transition: all 0.3s ease;*/ - cursor: pointer; - opacity: 1; - } - .hud-control.selected { - opacity: 1; - /*transition: none;*/ - } - .hud-control.hidden { - opacity: 0; - } - .mirador-osd-previous { - position:absolute; - left:1%; - top:50%; - margin-top:-35px; - width: 40px; - -webkit-transform : translateY(0px); - -moz-transform : translateY(0px); - -ms-transform : translateY(0px); - -o-transform : translateY(0px); - transform : translateY(0px); - transition: all 0.2s ease-out; - } - .mirador-osd-previous.bottom-panel-open { - -webkit-transform : translateY(-65px); - -moz-transform : translateY(-65px); - -ms-transform : translateY(-65px); - -o-transform : translateY(-65px); - transform : translateY(-65px); - transition: all 0.2s ease-out; - } - .mirador-osd-next { - position:absolute; - right:1%; - top:50%; - margin-top:-35px; - -webkit-transform : translateY(0px); - -moz-transform : translateY(0px); - -ms-transform : translateY(0px); - -o-transform : translateY(0px); - transform : translateY(0px); - transition: all 0.2s ease-out; - } - .mirador-osd-next.bottom-panel-open { - -webkit-transform : translateY(-65px); - -moz-transform : translateY(-65px); - -ms-transform : translateY(-65px); - -o-transform : translateY(-65px); - transform : translateY(-65px); - transition: all 0.2s ease-out; - } - .mirador-osd-toggle-bottom-panel { - position: absolute; - bottom:0; - right:50%; - margin-right: -25px; - -webkit-transform : translateY(0px); - -moz-transform : translateY(0px); - -ms-transform : translateY(0px); - -o-transform : translateY(0px); - transform : translateY(0px); - transition: all 0.2s ease-out; - } - - .mirador-osd-toggle-bottom-panel.bottom-panel-open { - -webkit-transform : translateY(-130px); - -moz-transform : translateY(-130px); - -ms-transform : translateY(-130px); - -o-transform : translateY(-130px); - transform : translateY(-130px); - transition: all 0.2s ease-out; - } - .mirador-pan-zoom-controls { - position: absolute; - width: 100px; - height: 65px; - bottom:0; - right:0; - margin:1%; - } - .mirador-pan-zoom-controls.bottom-panel-open { - -webkit-transform : translateY(-130px); - -moz-transform : translateY(-130px); - -ms-transform : translateY(-130px); - -o-transform : translateY(-130px); - transform : translateY(-130px); - transition: all 0.2s ease-out; - } - .mirador-osd-up { - position:absolute; - right:20px; - top:0; - } - .mirador-osd-right { - position:absolute; - right:0; - top:20px; - } - .mirador-osd-down { - position:absolute; - right:20px; - top:40px; - } - .mirador-osd-left { - position:absolute; - right:40px; - top:20px; - } - .mirador-osd-zoom-in { - font-size:130%; - position:absolute; - right:70px; - top:5px; - } - .mirador-osd-zoom-out { - font-size:130%; - position:absolute; - right:70px; - top:30px; - } - .mirador-osd-go-home { - position: absolute; - right:20px; - top:20px; - } - .mirador-osd-context-controls { - position: absolute; - top: 10px; - left: 10px; - transition: none; - /*width: 100%*/ - >div { - clear: both; - >a:first-child { - margin-bottom: 10px; - } - } - } - .mirador-osd-context-controls a { - float:left; - margin:0 10px 0 0; - font-weight: normal; - } - .mirador-annotation-controls { - position: absolute; - top: 0px; - left: 0px; - } - .mirador-manipulation-controls { - min-width: 364px; - } - .mirador-mirror { - -moz-transform: scale(-1, 1); - -webkit-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); - filter: FlipH; - } - - /* color picker custom style - ---------------------------------------------------------------------------- */ - - .mirador-osd-color-picker * { - text-shadow: none; - } - - .sp-dd { - display: none; - } - - .mirador-osd-color-picker .dropdown-icon { - font-size: .8em; - height: 30px; - vertical-align: middle; - } - - .mirador-osd-color-picker .sp-container { - width: 300px; - border-color: @gray-cc; - opacity: 0.9; - border-radius: 3px; - } - - .mirador-osd-color-picker .sp-preview { - height: 10px; - } - - .mirador-osd-color-picker .sp-replacer { - border-color: @gray-cc; - height: 11px; - border-radius: 3px; - cursor: default; - } - - .mirador-osd-color-picker .material-icons { - float: left; - font-size: 12px; - margin: 0 5px 0 0; - } - - .hud-control.mirador-line-type { - height: 11px; - border-radius: 3px; - margin: 2px 11px 0 0; - padding: 4px; - width: 57px; - border: 1px solid @gray-cc; - background: @gray-ee none repeat scroll 0 0; - text-shadow: none; - color: @black-33; - } - - /*.mirador-line-type ul { - color: @black-33; - margin-top: 0px; - } - - .mirador-line-type li { - text-shadow: none; - font-size: 10px; - }*/ - - .mirador-line-type ul.dropdown.type-list { - margin-top: -14px; - border-radius: 3px; - margin-left: -5px; - font-size: 10px; - box-shadow: none; - width: 140px; - } - - .mirador-line-type ul i { - display: inline-block; - width: 25px; - height: 1em; - background: no-repeat; - margin-right: 10px; - } - - .mirador-line-type .mirador-border-icon { - font-size: 12px; - margin: 0 5px 0 0; - float: left; - } - - .mirador-line-type .border-type-image { - display: inline-block; - width: 25px; - height: 1em; - background: no-repeat; - margin: 0 5px 2px 0; - } - - .mirador-line-type .dropdown-icon { - font-size: .8em; - height: 30px; - vertical-align: middle; - } -} diff --git a/css/less/overrides/jquery.less b/css/less/overrides/jquery.less deleted file mode 100644 index dbec97d016f1a2abead3469973d6ddd80cbf4b22..0000000000000000000000000000000000000000 --- a/css/less/overrides/jquery.less +++ /dev/null @@ -1,16 +0,0 @@ -/* - * jquery-ui-dialog theming/customisation (overrides to reset neutral defaults) - */ - -.mirador-container { - .ui-dialog-titlebar { - display:none; - } - .ui-dialog { - overflow:hidden; - padding:0; - } - .slot.ui-dialog-content { - margin:0; - } -} diff --git a/css/less/overrides/qtip.less b/css/less/overrides/qtip.less deleted file mode 100644 index 8983ce5e0591cd80f7271f3abdaba68c08712a3b..0000000000000000000000000000000000000000 --- a/css/less/overrides/qtip.less +++ /dev/null @@ -1,138 +0,0 @@ -.mirador-container { - .qtip { - } - - .qtip-bootstrap { - border-radius: 2px; - padding: 0; - background-color: @white-fa; - } - - .qtip-bootstrap .qtip-content { - padding: 0; - clear: both; - } - - .qtip-viewer .qtip-content { - min-width: 275px; - max-height: 200px; - overflow: auto; - } - - .qtip-content { - text-align: inherit; - } - - .annotation-tooltip { - padding: 10px; - } - - .annotation-editor { - cursor: move; - } - - .annotation-display { - position:relative; - border-left:0; - border-right:0; - padding: 12px; - padding-bottom:0; - border-bottom: 1px solid @gray; - } - - .annotation-display:last-child { - border: none; - } - - .annotation-tooltip .button-container { - text-align: right; - } - - .annotation-tooltip .save, .annotation-tooltip .cancel { - margin-left: 12px; - /* padding: 5px 7px; */ - /* border-radius: 2px; */ - /* text-decoration: underline; */ - /* color: white; */ - /* background-color: black; */ - font-size: 12px; - text-decoration: underline; - } - - .annotation-tooltip .save:hover, .annotation-tooltip .cancel:hover { - /* padding: 5px 7px; */ - /* border-radius: 2px; */ - /* text-decoration: underline; */ - font-weight: bold; - /* color: white; */ - /* background-color: black; */ - } - - .text-editor, .tags-editor, .select2-container { - padding: 5px; - display: block; - margin: 6px 0px 6px 0px; - border: 0; - background: @gray-ef; - box-shadow: inset 0 0 7px @gray; - resize: vertical; - border: 1px solid @gray; - width: 200px; - - .select2-selection--multiple { - border: none; - background-color: inherit; - font-size: 16px; - } - } - - .annotation-display.annotation-tooltip .button-container { - text-align: right; - } - - .annotation-display .edit, .annotation-display .delete { - font-size: 12px; - margin-left: 5px; - text-decoration: underline; - } - - .annotation-display .text-viewer a { - border-bottom: 1px dotted @blue-005ebd; - } - - .annotation-display .text-viewer a:hover { - border-bottom: 1px dotted @gray-dd; - } - - .text-viewer p { - margin-top: 0; - } - - .text-viewer p.user { - color: @gray; - font-style: italic; - font-size: 11px; - } - - .tags-viewer { - margin-bottom: 12px; - } - - .qtip-bootstrap .tags-viewer span.tag { - background: @light-gray; - color: @black-22; - border-radius: 6px; - padding: 0 5px; - margin-right:5px; - margin-bottom: 5px; - text-align: center; - font-size: 12; - font-weight: bold; - border: 1px solid @gray-aa; - display: inline-block; - } - - .mce-edit-area iframe { - height: 75px !important; - } -} diff --git a/css/less/panels/annotation-list.less b/css/less/panels/annotation-list.less deleted file mode 100644 index aaa79a91711b1ae6fdea3178f6243c9016490fac..0000000000000000000000000000000000000000 --- a/css/less/panels/annotation-list.less +++ /dev/null @@ -1,175 +0,0 @@ -.mirador-container { - .annotationListPanel { - background-color: @gray-f0; - width: 200px; - height: 100%; - position: absolute; - right: 0; - top: 0; - margin: 0; - padding: 0; - z-index: 2; - box-shadow: 0px 0px 5px @black-a30; - border-left: 1px solid @gray; - } - - .annotationPanelHeader { - padding: 0 10px; - } - - .annotationListPanel ul { - position: absolute; - bottom: 0; - top: 80px; - border-top: 1px solid @white; - list-style: none; - overflow: scroll; - overflow-x: hidden; - margin-bottom: 0; - padding: 0; - width: 100%; - } - - .annotationListPanel ul li { - font-size: 80%; - margin: 0; - padding: 10px; - border-bottom: 1px solid @white; - box-sizing: border-box; - } - - .annotationListPanel ul li:hover { - background-color: @light-gray; - cursor: pointer; - border-left: 2px solid @orange-red; - padding-left: 8px; - } - - .annotationListPanel ul li.selected { - color: @white; - background-color: @gray; - cursor:pointer; - border-left: 3px solid @orange-red; - padding-left: 7px; - } - - .annotationListPanel ul li.hovered { - background-color: @light-gray; - cursor:pointer; - border-left: 2px solid @orange-red; - padding-left: 8px; - } - - .annotationListPanel ul li p { - margin: 0; - } - - .annotationListPanel ul li p:hover { - margin: 0; - cursor: pointer; - } - - .annotationListPanel ul li a { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - } - - .annotationListPanel .resizeGrip { - position: absolute; - left: -7px; - bottom: 0; - top: 0; - width: 12px; - z-index: 3; - background: none; - display: block; - cursor: ew-resize; - } - - .annotation, .osd-select-rectangle { - border: 2px solid @deep-sky-blue; - box-shadow: 0px 0px 5px @white; - box-sizing: border-box; - } - - .annotation.selected { - border: 3px solid @orange-red; - box-shadow: 0px 0px 8px @black-a70; - } - - /* - .annotation:hover { - border: 3px solid orangered; - opacity: 0.5; - box-shadow: 0px 0px 15px @black; - } - - .annotation.selected:hover { - border: 3px solid orangered; - opacity: 1; - box-shadow: 0px 0px 8px @black-a70; - } - */ - - .annotation.hovered { - border: 3px solid orangered; - opacity: 0.5; - box-shadow: 0px 0px 15px @black; - } - - .annotationDetails { - box-sizing: border-box; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: inherit; - padding-top: 25px; - color: white; - overflow: hidden; - height: 20%; - z-index: 2; - background: -moz-linear-gradient(top, @black-a00 0%, @black-a77 13%, @black-a77 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,@black-a00), color-stop(13%,@black-a77), color-stop(100%,@black-a77)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, @black-a00 0%,@black-a77 13%,@black-a77 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, @black-a00 0%,@black-a77 13%,@black-a77 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, @black-a00 0%,@black-a77 13%,@black-a77 100%); /* IE10+ */ - background: linear-gradient(to bottom, @black-a00 0%,@black-a77 13%,@black-a77 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00000000', endColorstr='#c4000000',GradientType=0 ); /* IE6-9 */ - } - - .annotationDetailToggle { - float: right; - margin: 32px; - margin-top: 0; - cursor: pointer; - } - - .osd-annotation-overlay { - display: none; - } - - .displayBottomPanelButton { - box-sizing: border-box; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: inherit; - color: @white; - height: 75px; - z-index: 2; - } - - .annotationDetails p { - width: 80%; - font-size: 1.3em; - font-weight: bold; - display: block; - margin: 0 auto; - } -} diff --git a/css/less/panels/bookmark-panel.less b/css/less/panels/bookmark-panel.less deleted file mode 100644 index c055fab1e7c0bc734193d93a63abbd2253ad9a6f..0000000000000000000000000000000000000000 --- a/css/less/panels/bookmark-panel.less +++ /dev/null @@ -1,28 +0,0 @@ -.mirador-container { - #bookmark-panel { - position: absolute; - height: 20%; - width: 30%; - background-color: @white-a94; - display: none; - overflow: hidden; - z-index: 6; - right: 0; - top: 0; - padding: 10px; - - span { - width: 100%; - padding-left: 2%; - } - - input { - width: 80%; - margin-right: 3px; - } - - h3 { - text-align: center; - } - } -} diff --git a/css/less/panels/bottom-panel.less b/css/less/panels/bottom-panel.less deleted file mode 100644 index 087b6a15ed15d4c9f22bdb300b199377b615a7e6..0000000000000000000000000000000000000000 --- a/css/less/panels/bottom-panel.less +++ /dev/null @@ -1,86 +0,0 @@ -.mirador-container { - .bottomPanel { - background-color: @black-a70; - position: absolute; - bottom:0; - left:0; - right:0; - height: 130px; - z-index: 4; - overflow:hidden; - display: none; - transition:transform 0.3s ease; - - &.minimized { - transform:translateY(130px); - } - } - - .panel-thumbnail-view { - position: absolute; - height: 100%; - width: 100%; - overflow-x: scroll; - overflow-y: hidden; - - ul.panel-listing-thumbs { - clear: both; - list-style: none; - padding: 0; - white-space: nowrap; - margin-top: 10px; - margin-bottom: 4px; - - li { - box-sizing:border-box; - padding: 0px 10px 0px 10px; - display: inline-block; - margin-bottom: 11px; - - &.highlight { - padding-left: 8px; - padding-right: 8px; - } - - img { - background-color: @gray; - min-height: 25px; - min-width: 25px; - margin: 0 auto; - display: block; - box-sizing:border-box; - - &.thumbnail-image { - background-color: gray; - box-shadow: 0px 0px 5px @black-a60; - float:left; - margin-right:15px; - } - - &.thumbnail-image.highlight { - border: 2px solid deepskyblue; - } - - &:hover { - border:2px solid @blue-bfff-a70; - transform: scale(1.1); - cursor: pointer; - } - } - - .thumb-label { - clear: both; - color: @gray-99; - font-size: 12px; - margin: 0 auto; - max-width: 75px; - text-align: left; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; - text-align: center; - } - } - } - } -} diff --git a/css/less/panels/collection-tree-mod.less b/css/less/panels/collection-tree-mod.less deleted file mode 100644 index 8f5d9e0cab87da3387f51ceb85682532a0bfef4c..0000000000000000000000000000000000000000 --- a/css/less/panels/collection-tree-mod.less +++ /dev/null @@ -1,99 +0,0 @@ -.mirador-osd-download-mini { - position: absolute; - top: 60px; - left: 0px; -} - -.mirador-osd-download { - position: absolute; - top: 60px; - left: 36px; -} - -/* Collection tree */ - -#collection-tree, .select-results { - margin-top: 10px; - border-top: 1px solid gray; -} - -.member-select-results { - height: 90%; - height: ~"calc(100% - 75px)"; - overflow-y: scroll; - margin-left: 240px; - margin-top: 10px; - border-top: 1px solid gray; -} - -#collection-tree { - position: absolute; - float: left; - width: 240px; - max-width: 240px; - overflow: auto; - height: 90%; - height: ~"calc(100% - 88px)"; -} - -@media (max-width: 768px) { - .select-results { - height: 87%; - height: ~"calc(100% - 118px)"; - } - - #collection-tree { - height: 85%; - height: ~"calc(100% - 128px)"; - } -} - -/* Overrides on jstree dependency */ - -/* 32px.png */ -.jstree-default .jstree-node, -.jstree-default .jstree-icon, -/*.jstree-default .jstree-file,*/ -/*.jstree-default .jstree-folder,*/ -#jstree-dnd.jstree-default .jstree-ok, -#jstree-dnd.jstree-default .jstree-er, -.jstree-default-small .jstree-node, -.jstree-default-small .jstree-icon, -/*.jstree-default-small .jstree-file,*/ -/*.jstree-default-small .jstree-folder,*/ -#jstree-dnd.jstree-default-small .jstree-ok, -#jstree-dnd.jstree-default-small .jstree-er, -/*.jstree-default-large .jstree-file,*/ -/*.jstree-default-large .jstree-folder*/ -{ - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAABgCAYAAABsS6soAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAF09JREFUeNrsnXt4U/X9x79pAwWmyByUAYoTStWNm1xa4Cc4cXPi/O3B328VSUBRQATZYP64OGGA7FEsMJh4K6Tg2p6U3ugNaKFgQSkVkHuSVqRtmtLmtE3SJC1J2pwk798fudhCcdOdtF37+TzP6zlNwvN8c77JefE+3+/5njAA7PtC5a377x8Gap+KqvO+fz/EX21cRgKkoqL6Ty0SICUwSoBUlABJgFRUVJQASYCUwCgBUlECJAFSUVFRAiQBUgKjBEhFCZAESEVFRQmQBEgJ7D+w/aSkJEl7f3eF6mrvJ1hVfn4/2uPiyV0Bzh5ch/pv9i6jBEhFJULF7Y4Dx3EepVLpUXLJbqVSKXDJShenTHYrlckejuPAKZUepVIJjuPAcRzidsdB5Pb9eDiOc/vej9v3HgSlUulOVnIeZfDb/5cQs/3W8nM3m74buwZuuwb5CUs6RBSdIkDCixj/A1H7/xyO41Ch1cJitcBsMcNsbkCDuQENDWZYLA2wWK2wWs2wNFphtVrB8zw4joOY7VsbrbDb7LCYzTBbGmBsMMJoNsDQYIDJYoDZ3ACL1QKbzQ5ro1W09hljgfZdgvCdfFFahISv30Pa+TRwHBc0ATobdHA26OBuNt0xAZ49uC7oEuy0BEgQHQnHcW5DvREWqxVGowlGkwlmqwVWq8UrpiY77DYvLsEJu80eBAFacEF3Cplle3Ch+nNc4k/jSnUx1PovcUlfhMs3TuPSjSJc1J0KmgCNRtNt+MWc+lUS4q+vR4njOHL5D7A6bk1wBOhLeM4GHW5LhL7XOjIFdooAxfxyiUFkZCR6UgLz939XSYDB7P+kpCSJkuPc+poaGIxG8DwPnudhMPhEaG6A1WqFtdEakIGYAgLAUvaneYwGI+JL1uNQw1Ycafg7LtjScdmWjUs3s3Dh5gGcsHyCq825yLq+B4Z6E1L2p4kqwKOqz/D2yZU4eDkDPM+3EaDyzKfYVfIGcut2IFG7GSnarXi/ZAX6rxzylJiyuXhyVxvBBQR4i/gcpmI4TMXdNwFyHIeU/anoKvLrLAF2YiLqUf2v5JTumppq8HoeOp0OVVVV0Ot5GAz1MBqNMJpMMJlMsPgFaBVbgKme+noDdpxfjj3VryKxbiVyLe8i37IN+dZtyDNvxSFzLHKMW/D+uT+hzmAQ7fNhjLG3P34H68/NQYblTbxV9CL+UcAFBJj2lRLbLi1HfNUKxGoWYMvVl/Ge6hXIUp4GWxA+JhgCdJiK4bZrcPHkrjYC9IuvowTYqQnQaDShs5NgZGQkYubI0RMTYE/qf6WSc1XXVKNSVwmtthKVlTroqm5Ar9ejrrYWBoMRRqMJJl8isjSaRe2b1P2pnjqDAWsK5dhcOhsfVr2E3dWLoKhZAoV+CfbUvIb4mj/gryWzsfozGerr6pGyP9UjRtvShYOjXsh/FGtVv8SKi1Ow+ZtnsOzELHx6lEPKuSS8UfQ7vHZhPOSnRuGlL8ZjcVE0fpc0He98HCu6fFoL0GEqxq2J0C/GHpEAXYIAo9GEuN1x6MyDrzMF2JkJsCf1v1KpdFdX16BSW4kKrRblFVpotZXQVemgr64Bz/OoNxi8p4RWazASIOrqDfi/YzKsUz2NdSVPY2PJLGwonYW/lPwGa1UzsfTcRPxv4c+wIHsW6urFEyCbP3Tq9IThmH1iEJ49fi9mFoTiuaKBkOU+jleOPolZhXdjcg7D5CyGSZkMUbsfQHHpV0GZBDl7cF0bwfkft5f+HKZiJGyP6b4J0D/zxPM8Nm2ORWcdfF0hAf7Q7b8rwFv7v6Pav1P/B6t9pZLz6PV6aLWV0JRooCm5hrLyClRotajU6VCp00HP61Fb6x0bs1jM4DjOI6YA6w0GrDwWg9mFQ/Hi6dFYUDwaL53+BeYXP4TZJ4bi8YM/wrSsfpiX9RTqDfWingK/+f5GTNgzGNHZDFFZXtnNONQL03JCMDGDYWIaw4Q0hskfjURxybnAGGgwBOgwFaOprKBdATaVFbQh2ALskQnQP+Z0K5QAu2//cxzn0fM8KrRaqNQaqFVqaDRfo7ysHOUVFd7TYp0OvJ4PTAyIngCNRszLfBJTMsMQndkb07L7YlpWH0zL7IOoA6GYdCAUUZm9IDvwJAxGo6gC5DgOmWfy8PMPf4JHUxjGJTOMVTKM5RjGJDGMTmIYs/M+fHapqM3+B0N+daX7YL6Sh6ayArROhH7p1ZXuC9CtE2BXGIPqwZeF9Kj+5zgOel4PlVoNlcqLWq2BRqVGScnXqCj3SlBbqQPP87A2WkQXoNFogjwxxj1SwRChkCBiL8NDeyUYFc8wUsEwMp4hIj4Ecw/MhNFoEl2A1kYrducmYOT2gXh4H8OoPT4UDI9s/RmOnz8JrbbSt//iCVDKWF/GGMtPWBIQYGv8EvQ/rjzztwDdOgF2lVnInirAntT/HMeB5/mA/FqjVqmh1qih9Y0LarWVQROgLCHGHaFgGKUIRYRCgpGKUIxShCBCEQK/GGUJMe5gCVClUuPD7L14YMsgjPxYihEfSTHqnQeQfSovsO/e/RdRgP1CwqX9QsLzE5agqaygjeDqSvchP2FJpwmQrgPswQLsafvbWoBq31aj0kClLoFGpYFGrYZKpWkjALFXgiiPKiFLiHHLEmPc8xJi3LLE593yRO9WlhDjliXEuHOKDol6IbZfgHabPbD/3PF0TNwxBlN2RONw8bE28uN5PtC+aAKUSp/IT1gSSHz+FR+VZ/4WEGBr8XX7BEgQnXHK71/tYbtph/2mDTdt3q3NZoNLcMIlCBAEISgrQfynlu2txrh1ZYaYS/H8AvTLjed56PV6HD53HIWXTwWea41WWynqKfCtAmxNZwqQ1gITPQL/zQBS9qe2h+fW5/w3AxC7/e94D23aDmb73+dmCGLduMQ3DhiZsD0G7UEJkCCILklH1J3ESHeDIQii2wuwM+9HSQIkCKLH3ruTBEgQBCVAEiBBEJQASYAEQVACJAESBAmQEiAJkCBIgJQASYAEQQKkBEgCFP2egNQ+QQKkBEgQBAmQEiAlQGqfIAFSAiQIggRICZASILVPkAApARIEQQKkBEgJkNonSICUAAmCIAFSAqQESO13fbTpr0m06a9JbmQuldzIXCrxPyYBUgIkCNGp2LsQPwQx29elL/2WA8vcuozlLl3GcmeVF0F34HWPLn2Zx/9vgtr+v4C//Y6oVWvWIWV/KjZtjsW8hSuxaXMsNm2ORcwcOf0mCCVAal8MATSVFUNorLsd6+3POfQaUQWkS18KobEO7mYjnCYtWm7WwNlYg2ZrFZobb8DZxEOw10Gw1sLtMEForIMufSnESnD+9l2C8J2cKy1E0tfvIvMiB1360g6Lf3G74wLiU6nUiJkjR8wcOeYtXEm/CUIQYgjQ2VAJZ4OuDV4pmdrgEgS4m01BEGAtLuhOIadsDy5Vf46r+tNQ8V9CzRfjqv40Lt84hQtVp3BBdwpCY21QBHjr/rfug9SvkhB/fT1KHMeRy3+A+PjZostn3sKVaA+/8FoLsPXrPSIBdvRv1UZGRoIS4Lftd1b/d1AC9DhqVHA26ODgNXDoNWjWl6CloRJOc3syNIotQE9LgxYK9TocaohFvmUnLtgzcMmWg8v2XFx25KDAugslzsM4cP0jOBsqRRdgoSYf244tx8nCD+HQa9pIUHnmU+wqeQO5dTuQqN2MFO1WvF+yAv1XDnlKbAG2Vy5BgNFowqbNscjKuoGYOXIACHoK7DIJ0P9zgB19AHYVCXY23bn/tYpFkop9i9yOGhUc+hI4atRe9Bo4ajVoMWm9IjDfaCVBkQWYsdTjMFVg57k/YnfNEiTW/RG5lneQb92GfOs25Fm3Ic+6FQctsdh6dpnoAsyOn4P15+Ygw/Im3ip6EV9+vjsgv+LCPdh2aTniq1YgVrMAW66+jPdUr2BRyhNgC8LHBEOAIVHZtwGgwwXYJRKg/0erO+MAjJkj73QJdnYC7O797xXgYqe96jIcejVsFWdhr1HBUaOBg9egubYUTlOF9xTZrPONC9aKLMBlbrvxOv5cKMfbpbPxUfV8xOkXQaFfAgW/BAp+KdKM6/B26W+xouD3cJrEE6B04eAo+ZFxWKv6JVZcnILN3zyDZSdmofhkHIo+2403in6H1y6Mh/zUKLz0xXgsLopGTFI08uPnBuUUuCsJsNMTYNzuOBiN3nGXzjoAu4IEO4ue0P9axaIQ7aevNtt0F2GruYqb5Wdws+JL2G9cgaP6Khx6NZprS+DgS9Fi1MHZUBUcARquYe1nMvxZ9Rv8pfQpbPz6aWz4ehY2lP4Gb2l+jSXnJuDZwkGQH5gJp0knXgKcP3TqzMRhmH1iEJ49fi9mFoTiuaKBkOU+jleOPolZhXdjcg7D5CyGSZkM0+KG4qtrp4IyCUIJsBWbNseC5/nADFRnHoBiHIT+/01+6FasJPmvbsXu/+/bvtj9/x0CDK34dEmzvfI8bpZ/CWvpMTRd/wxN5adh056FvdqbDB36EjhqS7zjgV4BesS65q8qfZnbXn8Nq469gP8pvB8LikfjlTNj8PKZ0Xjpy1/gvwvDEZ3dG5OyQiE78CScDTpRT4GVH/8ek+MGITqbISrLK7sZh3phWk4IJmYwTExjmJDGMPWj4big+gzuZlOPEGCPT4DtQQmwe/W/VrEopOLTxc32yotoKiuCVXUEFvVRNF07hqayL2CrPANH9WXYq9Vw8Bo4TZUQrLxoAvROgixz243lmJ/zNKIz+yAqqw+mZPZBdFZfRGX2xqQDoZiUGYJJmaGYmyG+AHXpS3HwXBbGfjgAj6YwjEtmGKtkGMsxjEliGJ3EMPHvQ3DmckFgQogSYDcfAyR6Rv9rFYtCKvYtbrHfuISm68dhvpoP85V8WFR5aLx+DE3Xj+NmeTGays94J0b0GgiNtajYu0jUSZBmoxbzEud4RilCEKFgiFAwjIz/djtS4WVuxsygCFBorEP20R14aPsAPLyPYdQeHwqGcdvux9nzua32P7gCvFOtWrOOZoGJnjEL3IEClGj3LnLba1Q++R2G+cphNFzJg/lKHsyqPDR9cwyNZafRVFYcEIDY1wG2NFRCnvi8O0IRggiFBBGKEETE+7aKbwUoS4hxB0uA5it5SMl8DxFbfoyRH0sx4iMpfvHufTh5MhFNZcVt9j9YF0Lf6VrAeQtXBgQYGRnZ5jm6DpDokCTYfS+EXuRx6DUwX8lHxfkUVJxPRfnFVJjV+TBfPQKz6ohPjnmBFSPBWAmiPKqELOF5tzwxxi1LjHHLEmLc8oQYtyzhebcswfs4p+hQYAxOTAG6m01oKitAU1kBco/GIWrHz/H4jgk4XZQcSH5+gjUGyBhjWm0lbqW1/LKybmDjxiOImSOHf4iGVoIQhAgrQdwOE9wOA9zNRu/WbvBuHQa4nAJcgjNoK0Fuvfj4TviX4oktQH+6c+g1sNeocfL8QZy9UnCb/Bx6DZrKijt0KVzMHDk2bjyCjRuPYNWadYG/Y+bIkbI/tWckQIII9s0Q2l/4v6zdGwF0lZsR9ISbIeQUHbrtVNg//he3O44SIEEQdDssSoAEQZAAKQESBEECpARIEAQJkBIgQRAkQEqABEGQACkBEgRBAqQESBAECZASIEEQJEBKgARBUAKkBEgQBCVAEiBBEJQASYAEQVACJAESBEEJkARIECRASoAkQIIgAVICJAESBAmQEuB/hABvrb8xdu+dOmMjY33E7ByCIAFSAuwyH2D+iBErdJs2Vef99Kfzbu2ML4YNm2/askVzYsCAZ4MpQCljfVvTkX0h7RcSvmHDhk3tMWXKFBkd8AQlQJEF+H3q3j/dF7Xz6srLE7dPXCTaG/RVdt++f6xdvRrIyEDDhx8688LD5f7XCocMkduTk52oqIA9Pb3pmE+CQZFfv5BwxlgkYyxS2i8kvCMl6JPcbWW32cHzPDZs2LCJDnqCEmAnCLDf8kHjFNffMpQ4jiOX/wAPbo6YJ5YA0xhbrg4NBT9gAMy//jVc27bB/P77zvzw8LkF4eFzbR984ERuLpCdDZw9C0dq6s0Tgwc/GwwBMsYijUYTjEYTpFLpE4yxyI6SYHsCdAkCjEYTVCo1AJAECUqAwRDgvase/NWLOc9khb0cPuK25LdiWPROzYra3LodSNRuRop2K94vWYH+K4c8JcYHuJ+xTy4yhhuMQc8YzAMHQli4ELbt2+F4911g507ggw+AvXuB1FTgyBGce+ihLcE4BZVKpU8YjSYojyo7XILtCdADwNpohVqlhrXRCpcgkAQJSoBiCrDPq0Onrj0725JheROrPp+rYfKBQ/xv4kdLh43deun1uviqFYjVLMCWqy/jPdUreC7tsXK2IHyMCB+gJI2x4cmMZVxlDDxjqGcMFsbgfOwxeNasgWftWmD9eiA2Fu5PPsFX48ZlpDE2PJgCfOoPT3a4BO90CuxyCrA2WqFSq6FSeZFKpU+QAAhKgP+mAKULB0fFHB3dtFb1S6y4OAWbv3kGrxbM0rAXfjL0ntceeHRl0W/rXrswHvJTo/DSF+OxuCga0+IjNUw2aLyIY4CSNMaGpzCWrmLMU8sYjIzByhiaH34YrsWLgddfR8vatZ4vR49OT2NsOGNMEmwB3irBYI8J+gTouS0FegBBcMLSaIXRaIK10QqaFCEoAYqRAOcPnRqVOMg0+8QgPHv8XswsCMVzRQMhOzij7OWjT9TOKrwbk3MYJmcxTMpkGLGr93UmHzJB7EkQxhhLZmzoIan0arVEAp4xmHwSdIwYAbz6KtSzZl1OZmxosGaB2xNgawkGOwVOnTpV3p4A0epJlyDA5RRIgAQlQNHGAOcP/dXPdoXWRGczRGV5ZTfjUC9MywnBxAyGiWkME9IY7tsepmEvDBsr6htsLcBeveZ9ddddTRWMoYox+JOghTE0P/IIjEuWNLa+RKb7CXCaDG6PC/+sPCABEpQARZ0Flg/77f07pXWPpjCMS2YYq2QYyzGMSWIYncQw5L1e3zDZ8ImiG9pXSsbkJ3r3btEwhlLGUO6bFKllDAbG0MAYHBMmoH7hwpaDQ4bIO0qAHXkKPH3GdLnH7RH8ic+P94+2wZAESFACFPsyGPmQpwa9K619eB/DqD0+FAz3vh1WymRDxwflDTLGkkNC5h6WSIQzjOE8Y7jKGK4xhmu9e+O6RAK9b3LEEBaGm+PHg587Vzg8ePCc7jYJMmPGDLnb7XbCDbhdLrgFwYvLBZfggksQAhmQBEhQAgzGdYDzhz7747d71Y78WIoRH0lxz/qwa2zufVFBMzRjTBkW9te8gQPxRUgIihnDRcZwPiwMB/r2PZjC2KErjKHalwjr+/cHHx2N/GHDNgVTgB0tv+joaMn06dPlzpaWFpcgQBCccDq9uJwCXE6nd/xPEOChBEhQAgzihdCyob96ZOtI06h3RpbdKfmJKEBJGmPDEsPC/nF44EAUhYbiZEgIUqTS9DTGHkxj7EElY+kXfOOCX991F3LvuecfaYwN624XQk+fPl1ua7I57TY77HYftttxCQIlQIISYBBXgkiYbMh/tZ7tDWYCZIxJ9jN2f1JYWELmgAFQMnbAd6mLf6XI8CTGDpxgDJkSScJ+xu4PymUwnbwU7rHHHpNZrBZXY1Mj2nCzEdbGRlibrLA2WmG32SkBEpQAu9nNECS+tPdiGmMRjDHJLa9F+F570P9ad7sZwtSpU2VOZ4u7ubkFDocDdpsNDrsDzY5mCC1OCIITLsFJkyAEJcBuejssSSv+6Wvd7csslUqfWLVmnXv12vXu1WvXu9a8+RfXmrXrXavXrnevWrPes3rNOs+qNeuwas06WglCUAIMlgC7+k511y+C/xS8b//e4dJ+IeF9+vce3Kd/2OA+d/ce3Kd/78HSfiHhAbzjlVRUlABJgKBvCxUVJUASIBUVFSXALi1AKioqqh6bAKmoqKgoAVJRUVFRAqSioqLqIgmQIAiiO/D/AwDuKUn4ex3n/gAAAABJRU5ErkJggg==); -} - -/* 40px.png */ -#jstree-dnd.jstree-dnd-responsive > .jstree-ok, -#jstree-dnd.jstree-dnd-responsive > .jstree-er, -.jstree-default-responsive .jstree-icon, -.jstree-default-responsive .jstree-node, -.jstree-default-responsive .jstree-icon, -.jstree-default-responsive .jstree-node > .jstree-ocl, -.jstree-default-responsive .jstree-themeicon, -.jstree-default-responsive .jstree-checkbox, -/*.jstree-default-responsive .jstree-file,*/ -/*.jstree-default-responsive .jstree-folder*/ -{ - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAHgCAYAAACb9OC9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAADNJJREFUeNrs3T1uI8kZgOHqMbGwHPgGhsYXYNI8w9zBIU/GzLHjPQOZ8ADGjGMnC8MQvMG0E3FWK0gUf6qq66t+HkCw1hg1ye56VdVkkxqmaUo5DMOQoDfjOE77/b7Zwf3JIYK4BAwCBgQMCBgEDAgYEDAgYBAwIGBAwCBgQMCEcTweH4/H46M9EdvKLlhmvNvt9uvz95/X6/U3e8UMTLB4U0ppu91+NRMLmIDxiljABI9XxAImeLwiFjDB4xWxgAker4gF/K5xHKdxHKdeb6+XeEUs4Ddjeuv7Xm6vt3hFLOB0LqCSUdW+vV7jRcBnwykRVe3b6z3e3W7nKq2lBnxJMDmjqn174qXbgK8JJUdUtW9PvHQb8C2B3BNV7dsTL90GHCnEHiIWL59aiDfC0lu8LOYcuHRUS75AQ7wUCfhwOAw1Is4Zb877LF7Cz8ClIxaveCm8hC4VsXjFS6Vz4NwRi1e8VAy41VDEK14BBw1GvOIVcNBwIsYLTQQ8d0CR412v1992u93nXNvz/l4Bhwqph5lXxDQRcO2gelo2i5gmAq4VVo/nvCKmiYBLB9bzE1YipomAS4W2hGebRUwTAecObkkvFYmYJgLOFd4SX+cVMU0EfG+AS75IQ8Q084b+W0J0hZWIBdyQa4IUr4hp8CN1LglTvCKm0YA/ClS8IqbxgN8LVbz1I0bAWSIWb/2IvX9YwFkiFm/9iMUrYIJGLF4BEzRi8QqYoBGLV8AEjVi8AiZoxOINbJqmLF/EcTweH08fmO9CjfPGcZxyNVLia+UQLXMmPh6Pn0/f2yNxCXjBEdsLzoEBAQMCBgEDAgYEDAgYBAwIGBAwIGAQMCBgQMAgYEDAgIABAYOAAQEDAgYBAwIGBAwIGAQMCBgQMCBgEDAgYCBuwMfj8dFfiYfbrOaOd7vdfn3+/rM/Og1BAn4Zb0opbbfbryI+bxzH6ZafOxwOg71nCV0s3lcRW05njPfen0XAF8Ur4rIBiljAxeMVMVxnmKY8v5iHYcgS70u73W4R58RRZ8clnFuP4zjt9/tmH2eVGfiWeJcwEx+Px8fIS9txHCcrpc4DvjVey2mYOeB74xUxnLeKckd7fJ34+bEMwR+Dinqdgdfr9bfdbvc5c8RmYqh1DixiCBywiKGcaq8Dp5TvSa2T6K8T594fc+j9tXqvA5uJoY+ARQzBAxYxBA9YxBA8YBFD8IBFDMEDFjEED1jEEDxgEUPwgIHAAbvUEoIGLF4IGrB4IWjA4oWgAYsXggYsXggasHghaMDihaABixeCBixeCBqweCFowOKFoAGLFzo5BxYvBAs41/t7xQszzcD3RixemHkJfWvE4oVGzoGvjVi80FDA10QsXmgw4EsiFi80HPC5iMULV5qmKcvXLY7H4+M4jtM4jpOPf6VF4zhOuRop8bWac+es1+tvx+Px8+l7wwWus5r7DggXgp0DAwIGAdsFIGBAwICAQcCAgAEBAwIGAQMCBgQMAgYEDAgYEDAIGBAwIGBAwCBgQMCAgEHAgIABAQMCBgEDAgYEDAgYBAzMZTXXDY/jOOXc3uFwGJZ04Ow/qgece9C93nbvg7D0/hOzgKsPvGsHXcTQa+y/t25PyM6Bm4t3jiAixdvKbdNAwC3GG2lwtnAfRbzQgFuON8LgbOm+iXhhAUeIt+XB6T4xW8CR4jXbiTi66q8D13pm85rBFunZ1tL3VaQLnoE/OvjibX//fXQbAl/AObB44+6/aPtFwB3pNV4oHvDcS6vo8bq4hMXOwGZeBNxQjNcEKV4E3OBMekmY4kXADS+DzwUqXmgk4GtDFS80EvC1S2Xxwm9WUe7otS9diBczcAUlQhMvAg4asXgRcNCIc7/NEARcKWLxIuCgEYsXAQeNWLwIOGjE4kXADTsXqHghwNsJ3wpVvBAk4NfBihd+E+ZSShdoQNAZGCgcsE94tP8wAwMtBlzzSaUen8Cy/ygecAuf6t/KX4ew/6ih+rPQfrvbfzS8hI48w7mP8fefgDs90J7lFa+Agx7wiIPP/mPWgFs58JEHn/3HrAHPPQB6GHz2H+esag6EWs+g9jbw7D9mDfitgZF7MC5h0Nl/zBqwAWP/EewcGBAwIGAQMCBgQMAgYEDAgIABAYOAAQEDAgYEDAIGBAwIGAQMCBgQMCBgEDAgYEDAgIBBwICAAQGDgAEBAwIGBAwCBgQMCBiWbjXXDY/jOOXc3uFwGBxOBBwo2ve2LWYEHCTcc7cnZJwDB4u3lduG8AG3EJCIEXDwcESMgIMHI2IEHDwUEdOb6q8Dl35mWKSYgQvFU+NlnY9uQ+AIuMGZd67bgkUtoUvNhKLFDFwpyBLL2LlvH7peQgMCBgQMAgYEDAgYBAwIGBAwIGAQMNCelV3Qt5av+/YGFAEjEktoQMCAgAEBg4ABAQNtB3zNyxUlXtqY+/ZhDrO9DiwiCLSErnlFkE+dRMAFZtUaYbXw1yGg2yW02REaXkK3PMOZfRFw0FDEi4CDBiNeBBw0HPEi4KABiZferWqGVOsZaOEi4MJh+fvAECxgwUGwc2BAwICAQcCAgAEBg4ABAQMCBgQMAgYEDAgYEDAIGBAwIGAQMCBgQMBk4G9RCRgQMCBgQMAgYEDAgIBBwICAAQEDAgYBAwIGslmV3Hjmd8IM9/zw4XBwtDEDAwIGBAwCjsonTSDg4Pd/Sin9xWFEwHED/ldK6c8OJQKOu4z+RcQIODYRI2ARg4DnjviPDi0CjusppfSTw4uA4/pfSulPDjECjuu/zokRcLsueYfSLymlvzrUCDhmwCml9E+Hmh6tgsf76cLHaBmNgBv0/YJ/82tK6d8ONZbQgBn4Rn9LKf3hxqX2f1JK/3C4EfB8/p7hnBksoQPy5n8EHNh3hxoBAwIGBAyLt7IL+pf5L2RkczgcvDIgYERiCQ0IGBAwIGAQMCBgQMCAgEHAgIABAYOAAQEDAgYEDAIGBAwIGFhSwD5WBgF7nNCWoh9q5wPVwMwECBgEDAgYEDAIGBAwIGBAwCBgQMCAgAEBg4ABAQMCBgED4WT7RI5pmuxNurPZbMzAgIABAYOAAQEDAgYBAwIGBAwIuKbBY0LAtMT1sQIGBIzlNwIGAZstnC8iYEDAIGBAwICAl2ez2fz4Ov03fGRlF9QP9Zz9fv+7/4XFBvxOLNPDw0N6enoaronk5bZOP7fZbLKGdsu2Xj3GKaU0lIh/s9lM6YOX2/zSEXDR2e15gKenp6f08PAwbTab4TTwXv/sW//f60H68t+8t42c8X7w+E6vQ/94XJfc5oVL9enlLwjZOAeew+8utDhFfO8MmWPWybCN6YP/bnXbCPimQXh1xOciuyfAAvHmDK3kthHwXYPwR8Sbzeb7HHesYLw5Qiu5bZZ+Dnzludul/3a4N8hLX/6pEO89j2uqtc8wA+ecIe6eVS4Js2K8t/4iq7rPEHDRpeO1wRV+OWUq+HPTDPsbAWcfTNO9Mb73c9cssws8tmmmbSPgqoNouHcm/SjSGS+VnErtN5d/1hfmSaxLL9LIFW+NgXzDlVxDxhXG0Np+Y7kzcLh4b/n3z7HnCmV6vjyyiRULyw04e7y3DsS3rpcutPRsabYz8wp43nj3+/3s+yFoxOJ1DnzzYM458w733t8cy8cZz4nFawZ2zrugmVi8S5yBXzxpMpxZzi423iAzsXh7DfjC96uevh/u3EaX8TYesXgXOgO/d/HAcOc2QsZb8OWWkhGLd6EBf3T53tBKvBk+FePiOC/5JXBj6CUiFu9CA770AvrBsvmyeC/8JTMkV1gJuEK8H0Us3tvuR+6P1BHxwgKeMgyUIvHeM7Pl3EbB8+Op0PEUcYM+NRLv659d5PKv0XhrbJtGAp4aGijiFbGAg0aT9X6UPv8NEq+Iew8489vdxNtuUCLu+Bx4zojFK+JFWRWOaWoh3kaeHe4p3pf3wbPTHc7AtWfiMIMo06ze0uxnJu444BpxLW0GaOZ90CLuewldYzl90UUarSybT9u89QMASnyGVcbLLqfNZjP4XKz+ZuBSM2XomXfGj2AdrGIEPHd0XQy4GT59Y5hp23QSsIEyX8TDzNumk4ANlPoRD41sm8yyP4n13pMYbwzSa5886XqgFPwInVv2W8lt03LAtQdKT896Foh4KHhsxLvgJfQ1A2FRA+W0UrliWT0U3G+DYyJgA6XOTFxqvw2OiSX0LUu2bgfKPX9z+MzMfNp/Q8FjI96lBvx60L4zEIeff/75py9fvvza87lu6ZVMjo8HemNV4CqrFg/4NLmMNc37N4bs07ZPZ6b9ft/symOV6UB1M3u9Imq6X0Ib5GZxej8HZtGrGwS8SJFndL98KvhkFyBCAQMCttz1mBAw4hcwIGBAwICAQcCAgAEBw3L9fwAtDc+RYNrg1AAAAABJRU5ErkJggg==); -} - -/* Remove icon from customized items */ -.jstree-anchor .jstree-themeicon-custom -{ - background-image: none !important; -} - -/* Attempt to override throbber.gif */ -.jstree-default > .jstree-container-ul .jstree-loading > .jstree-ocl, -.jstree-default-small > .jstree-container-ul .jstree-loading > .jstree-ocl, -.jstree-default-large > .jstree-container-ul .jstree-loading > .jstree-ocl -{ - background-image: none !important; -} diff --git a/css/less/panels/layers-tab.less b/css/less/panels/layers-tab.less deleted file mode 100644 index 0ea9dbb3dcfaf7eec24a81817d1998cd0b359d5d..0000000000000000000000000000000000000000 --- a/css/less/panels/layers-tab.less +++ /dev/null @@ -1,110 +0,0 @@ -// TODO: Go back through less files and remove mirador-container -// wherever it appears explicitly, as it is -// causing specificity problems. -.mirador-container .layersPanel h3 { - margin:10px 0; -} -.layersPanel { - position: absolute; - width: 285px; - left: 0; - right: 0; - top: 0; - bottom: 0; - overflow-y: scroll; - .layers-listing { - padding: 0; - list-style-type:none; - margin-top:0; - } - .layers-list-item { - .clearfix(); - border-top: 1px solid @gray-b1; - padding: 10px 10px 10px 0; - margin-right: 20px; - &>h4 { - margin-bottom: 5px; - } - .thumb-container { - position:relative; - float:left; - width: 60px; - height: 60px; - margin-right:10px; - img { - position: relative; - margin: 0 auto; - max-height:60px; - max-width: 60px; - display:block; - opacity:0; - border: 1px solid gray; - box-shadow: inset 0 0 12px gray; - top: 50%; - transform: translateY(-50%); - &.loaded { - transition: all 0.2s ease-out; - opacity:1; - } - } - .spinner, .failed, .thumb-failed { - position:absolute; - display:inline-block; - width:100%; - margin:0 auto; - top:50%; - transform: translateY(-50%); - opacity:0; - transition: all 0.2s ease-out; - color: #666; - } - &.awaiting-thumbnail { - .spinner { - opacity:1; - } - } - } - &.requested { - .spinner { - opacity: 1; - transition: all 0.2s ease-out; - } - .thumb-container img { - transition: all 0.2s ease-out; - opacity: 0.5; - } - } - &.failed { - .failed { - opacity:1; - transition: all 0.2s ease-out; - } - .thumb-container img { - transition: all 0.2s ease-out; - opacity: 0.5; - } - .thumb-failed { - opacity: 0; - } - .thumb-container.awaiting-thumbnail .spinner { - opacity:0; - transition: all 0.2s ease-out; - } - } - .visibility-toggle { - margin-bottom: 10px; - } - } - .disabled-overlay { - display: none; - } -} -.layersPanel.inactive>*:not(.disabled-overlay){ - display: none; -} -.layersPanel.inactive .disabled-overlay { - padding: 10px; - display: block; - box-sizing: border-box; - color: dimgray; -} \ No newline at end of file diff --git a/css/less/panels/manifest-select-menu.less b/css/less/panels/manifest-select-menu.less deleted file mode 100644 index 6c5710a1f3c4e8b2066ac632f5f1a0177a950f6f..0000000000000000000000000000000000000000 --- a/css/less/panels/manifest-select-menu.less +++ /dev/null @@ -1,299 +0,0 @@ -.mirador-container { - @media screen and (max-width: 768px) { - #load-controls form { - float: none; - } - - #url-load-form { - margin-bottom: 5px; - } - } - - #manifest-select-menu { - position: absolute; - margin: 6px; - display: block; - left: 0; - right: 0; - bottom: 0; - top: 0; - display: none; - overflow: hidden; - z-index: 18000; /* Must be higher than Qtip elements. */ - background-color: @white; - box-shadow: 0 0 6px @black-33; - - .container { - position: relative; - width: 100%; - height:100%; - padding: 10px 4px 10px 10px; - box-sizing: border-box; - overflow: hidden; - margin:0 auto; - } - - .remove-object-option { - cursor: pointer; - display: inline-block; - font-size: .9em; - font-weight: bold; - transition: color 0.2s ease-out; - - &:hover { - color: @gray-91; - } - } - } - - .items-listing { - margin: 0; - padding-left: 0; - box-sizing: border-box; - - li { - list-style-type: none; - overflow: hidden; - border-bottom: 1px solid @light-gray; - padding-top: 10px; - padding-bottom: 10px; - position: relative; - padding-left: 5px; - transition: background-color 0.3s ease-out; - - &:hover { - background-color: @gray-dd; - cursor: pointer; - } - } - } - - .manifest-load-status-indicator { - width:100%; - padding: 10px; - box-sizing: border-box; - overflow: hidden; - background: @white-a94; - position: absolute; - } - - .request-status-bar { - background: @deep-sky-blue; - width:10px; - height:50px; - display: inline-block; - margin-left: 5px; - vertical-align:bottom; - transition: all 0.1s ease-out; - } - - .request-status-bar.pending { - background: @gray; - transition: all 0.1s ease-out; - } - - .loading-status { - display:block; - } - - .request-status-bar:nth-child(2) { - margin-left: 0; - } - - .repository-label { - border-top: 1px solid @black-a70; - padding-top:3px; - position:absolute; - bottom:0; - width:100%; - } - - .select-metadata { - width: 45%; - max-width: 450px; - min-width: 300px; - position: relative; - /*width:200px; - text-overflow: ellipsis; - white-space: nowrap; - overflow:hidden; - position: relative;*/ - } - - .repo-image { - position:relative; - width: 80px; - height: 80px; - overflow: hidden; - opacity: 0.5; - - img { - position:absolute; - width: 100%; - top: 0; - } - - span.default-logo { - position:absolute; - width: 100%; - height: 100%; - top: 0; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAE/JJREFUeNrsnX+olFd6xz9nGC4XERGxIiJBUgmpmDQk2WCzaWqsiPmBbLNpPLPW/UHChiRtNt25IVlkG1wJacp9DQntbgPbbOhuMrNJ1lprVWzIusHaRSSVIGGRrAQRERERkdvL5TJP/3jPtG/efX+c875n5o56HrjM3Hl/nvN+n9/PeV4lIgQKZEuNMAWBAmACBcAECoAJFAATKAAmUKAAmEABMIECYAIFwAQKgAkUABMoUABMoACYQAEwgQJgAgXABLpeqVnlIKVUmLmrkCYmJhCRhhEUY8D05ORkb+CACXRVAWQcuAG4XURuAVYDy4FlwIPAxwEw1zG1222AJcBaEbkfuEcptUJEmmnNYKQNATDXJ1DGgHuBrcBDwMIsG7Vu0X8AzNUPlHnAV4DvALcnn6lSCt+rQgJgrl6gNIENwIvAnUXSJP0ZAHP9gWU58DLwKDBWJkn6231IHK+A0Vr3z9lH+6xSqtfpdObSAOzfzzgwDcwCvSiKnM/XarUaItKfsx7Q63a7vWGNx3g9G4A3gBW2dolPCaOqnCRtbWut5xs9+iBwK7AYuAJ8DhwH9iulDnU6ndkh6vX1wP3AXcaNHAemgJPAvwNvRVF03pIJbgS+BtwHrFBKzRORC+Zc/wXsBj7rdruDBEsDeEZEXgbG+88gKTmSEiT5W3K/1DFfmpycPDY0wGitG8Am4NUk4jOoB5wGfgS82e12LwwIKEuBbwNPmDhDEZ0Htiml3swLXhlG2A48ZQCXR7PAR8BrwL5utzvreVxNo4K+S4XofIFKGh5gWq0WIvIM8IpSajwP7Rk3+zmwQyn1s06nM+PRpfy6MQCXp7krLZ4T9zID/C2wPYqiXgosC4EOsDFr0nM+Z4FDwPPdbvdjj2B5BXhWKdXIGkfeeLOkTUrSOAOmci5JRNYBLwHjRaBL60+l1ArgDRF5W2u91MOELgN+CvxIKbU879r9vxTwx4AXgIfTtooZ28a8h5Dz2VRKrQd+qbV+Smtdy0bsqyHz1yizQ5LjtHkmVagSYMxEbAfmK6UKc0v9bal9mkqpR4D9WutVrVarkkHbbrdXAvuNt9CsODljwI52uz2eOOZ24JvpcSXHmvWZ2H+BUU+vaq3n1WDKDcCO/th8uslVj60qYW4F1mRxr+PnbcC/ishNLqCZmJjA2Ez7zb04TWTGfjcBaxO7bAXmpcdVNs4UZzeBvwRe01qPV2CIFcbmm1f34fv0kqoCZq1SqpnkrCLOK/lcCfyLiCx14I4lwL8BKy2kmY231wD+uN1uo7UeA+7JO2eZhMn4/XFgh4t6arfbfZW4wsVbdZTyQwXMH7hwnsXnKuCfbDjRqI6fEGdda3FSar/VZj4WGDfceRwF8/As8BcOUnQ98IgvtTIKEmaBBWc5fQIPAM8aV70oEPdds+/vcI0tJ+XstyhhCI95lDB99RSJyGpLj+8lcx+FEqVgLgufyVwABs8Spk/PZ0mOlO30XB6XudowOXPRcPCKrOfBAPLVVqs1VjK1m4hrV0rvu2guS+5l6IC5ksVZHv4WAttbrVYzJx7xIrAw69gyrs/aL8Wpl82kzgAznsfVv8ZaEXk4TzUZN/pppVQjy/uykWYF1878bViA+W0dEVeC9AdEZE3G73dmxUXqpjUS9JmJSF82UWDvZByF50RkLGdeVicNbhfDdVhls1UBc1xEerYiMk8k5mwfA54wOZyk7fJY0tXNClIVqQmL/f87iiK63e408GnWflXUVE4oYW2OfbYZaOa580XjsNjvnIgcEJF9IvKJiEwPEzC/Jk4uWnGBq+FIXOexJHGKhcBDlmLfVU1AnMU+nLjef1Th5jIj01yzAWxJMkQigLip6riKVDDwY+APoyi6P4qiB4E7gFuMVHWiqqHri8AB4NGyfIVDjilJi01gcI/5/y5gSZnRlr6mg3o6JiInE5sOAhdFZFEyw5seZ5aqLcjbJK+5nv8vt+jTjcCqOiH9nO17gCejKPq/hKj5/hnA5OTk4CWMSeP/hLjepbZLncEZDeDLiUveBTTyOMpGqhWE8XvAGzt37kwefhrY6zN0kLrmUhNd/kIwtD/GstSDreQhzqJ/PwmWOXOrgQ+Bo7Yupu3/id+TE/r7ee6irZ1R8P0EcT1LmiFeE5Ep17RA3n6ptEHDSJSk/fJll3EU7ZfYfsL8zbnRS7fbnQG2i8h0UZKuLOhUwP1LEu7nEhc9brufKUfYEUVRlj12HHinyG7JCpTZuMH9MSW+jwOrbNxgl1ACcMxIUEZBwgB8AHTz0O5qU6RofvL+8ri2pueyO2EnfYE6nU4P2CEiZ11tirz5SNHCZOQcuKFMgrkG74DfVilFHRhgTD3rNuJSxcKJs40TJMB2KcEdU1nGpc05UxIluekU0I6iaKbg2NPEyzcqcWkJk1xMSZsFeQZ1WpLZFHwbujQqcZjkDZ4FHhORyx5iFEmOOpsoHj+V9TBsCoWy9jP3+g1j3OZSp9NBKbUL2Fk1NVBwv2cSm5cBYzb2Sln1v880wEAAYyb1MPAtYMqXRwH8Z+IyvwJ6WarOZXLMcdPmXg/biOtOp9NTSm0Dfgb0XJOPWTaOuYfjic2L0tKkbi5p1CK9vwMaYBewte9Z2IAjT12JyCUTC+nTYeBUuuq9LC+S3kdErhjJsttFt5va4yf6oKkbwDO2XzL9sCRrbHnutM11BpUq8NYfxriiu4CvisiZKnmdhKh9J2kXRVF0GYj6D6u/XxlnpdTFaeCrwLvpgm/L8U0BT4rITuLi8UoPx4TkX06tZxrPs1HyjHuXeR1JwPRBo5Q6APypyVnMWk5i8vMI8GLGGp+3ROSfk6opL7aS+m3WeEL3RVF0sI7X0O12p5RS3wO2iMgpVy/J3MvLZoxJ+j0b9eJaajEI8r5U1qink1rrPwMeEZHnTYyhWbI0omdE9bey1i1FUTTdbrf/yuj/x/slogXh+VkTh3gF2Osr2mkW472vtT4MtEXkm8DiopSI+T5FXHb5d2lmSC4fsWEum7RLHuhM+ecik544Umb4DxwwqcDeO1rr3cR1IFuB9SKyKCHZeiLSI85+/0N8WDc3ixpF0ZV2u/00cQ3wX5tw+pg5X8/8nRORg8Rrij4qcptrju9cq9V6TkReNYyxmbh7wlhqfFeAfcSL/Y5mrY50lQauxq9ZYjsG3E1c4P6ASU98yRUwlReymVLKhu0qP5OdHTMh/xuMxJkCfgOcdV2DbcLpC4Gb+eLS3DNKqVnbpJopiZxJqyqtddPcU6m9Yxb1Nfr3o5RabOb1vAnNXylaRjsxMRERl556JRF50jgMLUArpW5MbXdeyFZHwiwAfqG1/hWwSyn1adHkmgmbwVN+wzzgS8SlFk5kqvduJa4/uRf4k7QhS1zI9aTW+m3gQNHyXgP0ngnGHfEc4LNi4JxzfN94YE1frnezxk02RGSVUmqdiDwvIsfM5O5VSp2z4cxhktHdNxA3DWgBtyqlxkXkQk6eaExENiqlNojIBa31AeBt4IhS6orPjhR123AUHLvMd5ym6WnA84B7ReRe4IKIfKC17gCHlVIX56rdh9HdS4yts8V8LnB8QA3DpV8Xka8Bp0Rkl9b6PeDTIpurzgPPusei2pyR7w+TN0hjT2gReRT4XET2GvAc9zG5liCZB6wRkRbxYvplmFoTmwhqQWCsaWywF4hbbxzXWv+cOIl5pmqvmKzWHUVznrePZXFaLeA0fYrR1M02RORGpdQzIvIUcMJM7rtKqdM+e8UkGgetFJEtxIvrb8ZyyUiZC5vzOQ+4Wyl1t4jsAA4ZlXwQuOwCnipLZVzjMr5U08Dc6tRNNYmLn29TSr0oIocMePYCF6o24jHSZJmxSzYbt7HpyoE2kdGSkoUFSqlNwCYROQfsMVL1CDBTNr6sRkA2TGrZgsRa8swpYPIGZ8LgG83fReCA1vptpdSHnU5n2lKazAc2GmmyznhspSrGheOy7Iec8aSP6Tc1epy4brartX6vzIu08Zh8SZSRkTAVlscuMoakFpHTWuv3gZ8DH6dFuvFy7jYezsPENSSNvDZdeQXYLpzmUiWYsb0B3CQifwO8ICJHjcrabbzI5APs2QDSRYIU2T91gNP0rHqqUoO4U8EEca+XO4B03GORAdMyV46sY8NYqqQySdvvCHEPcIuIPJ3abb7N+atKlLog8QoYl+UWNstQ+jZIFqjy8kdZHFRml5RJmLycUNH48vZPbWtmXKtZdB1bxnVt7DRUCZPRisxpgK4TYmOoVc3J2Ijwon2LJEJRPMWnJPMo7UtVQW17ZRjrel3qQFzbfdhIGZtz2hRzlakMX1K+yryMkls9lPLCGi3LCl1w3/ZQ1RLTqsw0Cu0+nFHvut7ah5dWlzNd77+qhPHtnY6shKmz6L4KWGzcRheDfABhAqftZcDN6+RdFi+yiSdVDd41fIrCuoEll9JC25pem+UorqK8YhsTq+tk1fBm/W9THppjiE8DR0WkTVyLNLdxmEHmN2zXS/tYs1MXFC7jK4ga15rrBM0SZ9n3mFjWiSiKpsG9e4M3ozdP1JXlP+rYFenzF72kwdVFLxuPbUbYBgyuKsImR2S+XwL2isjbxOuwrsy5l2TTxdKmFUcdUFYBVx1j0tb2yguWlQXYiuI3jstMtkVR9MORiMPYqATfNkwVlWRzf1VtGF8hg0GoJPPde9XjUCWMzadLMrBu9NjGtij6Pe9aVSRoWZCwKN2Qdy+DiPw2fEgW1wDSIAbkem6XzhJ14xs+4h9lKYlR76JZ2mCnavyh6sCrxHSq2DWDoDrXHxZQvHpJRV6D6/9lk+Cj2Nl2v2F5SUUBtqLffFbSDRUweZKjCnDqinefEqaskU+Z3eHiJVX9rUiyDgI83sobfAbyXEoIBi1hXAN1c6GahqlWa68aGLYOrTNBLscNamw5oYPLNmuNylTQVaGS6q6Vyfq/Kie6pgZclpm4gq/swbtKbhcpPZJeUnLwdd5ZVMXar+rm+rhmWbtYm/IG1xjMXHtGA4vD1C0HsJ2oGi3LKl3PFXCuLn5WGcM117LMpjbD1TCskCsZSsyijmQa1P1VkWQjZcP4+r+qfq/idbiWHLicyzU2YtHi3nsR/JwApu5yzfSnS5zChQNLln54H58LAH1JBJuWZSMZuBvEuVxVVZVcV5lbXdWmKQONrwc7DG9pTpfKuhiHNgvmisDjCsQiA7LmElpnaVg1JjSSEsam64BNnMbVoC7iKlcuriPVfAQLXWpf5pq8x2FcjMKqEzHMOEzV6kEfHs8oxV+8AaaqWqoivl1BlldQVGXibUszqqxLcqltrhIkHdnAXV2d72LcVglS1bFjXMBdZV2S6+uBqkjYObVh0v3+fcVhfMR+fF3LJgZStF56WDUqw4zHDKTdxyAGW8Y9Ng+06muFfdpULm/GLXIKbNuUjLRbPch+az4Xutmcs6xr1aDGV3SP10S22lccxsXDcUnG2STrXG2YKuMtslNsgoRV53Nk4zCDVkk2S2IHsebZxbPxOW6fLctGLg5TJ/YxTO4YRKxnGC02Rom8rHwsW2BlY6wOUw/bgGNUIqvXHGDqRl19cmJoWTZ4uqraffi2F1xyX1WbJ2dtH8aS1msiDlPWvtT2Ibq0Wrdx+W0MXpfssWt23GYdV5GLn7V95OIwPpKGdWpRXd4WX0Vsu5Q3+FIRRa60bR/iQaungdT0hpZl1dSt75Zl170Nc622LLOt36nRsmx0vKQyD8W1+5QP1WG75rnOeOrEYbJskzprpIa5zCS0LBsyaIbcsmw0A3fDsmGu1ZZlNud0VUmDUkuhZdkItCwri5bb7BNalnkyvm32n+uWZXXWU4eWZddhy7JhBU7nOnDXw7xN/mptWWZoioz2pCIyC/TM23Fzr3G9tSyrI2EuAX8kIt8BjhK3J891E315TumODOmkX1bRUkYXhxngI+Ax4I4oimYzrrPXjO914GyZNLS9lyLJmrVf0W85krUHnAR+QPzW3tGQMOYll2eB17XWPxSRVUBLRL5C/DLwRlVPaUAty3rACeA94F3gsyiKegXjmwWOaq2PAt8TkfVmfOuBxT7tsbrSwRx7xgCkA/wamImiaPS8JIButzsLfKK1/gR4CVgDbAE2KKWWDUJvO0zu6cREHlNKTbu8kMG8c3oK2NNqtfaKyFLgAeK3264xLzx3AkeRSnJpWQZcAg6ZdwkcAi4MAiTeAZOa3CvAB61W60MRWWw4civxK4QXDKll2QWjcvoTedHHRJr3Tp8Ffqy1fgtYKSKPAn9upOqYbQDONfaT+G1KRI4Tv5VkN3CmSFKONGAyJvc88I7WugusJH5z/GZgtVJqvGpDv5x9p4CPzUTuAU4PktuMVP0N8AOt9SRwlwHOQ8DytH1YVHJg8faVWRE5BewyKvVEFEUzc+GVNYdxEfPS8pPApNb6deA2A5xHRGS5UqrhApQE584Cp4Au8Aul1KeTk5Ozw57Ebrc7BRxqtVqHRGQbsE5EvgGsA+a7vBI58b0HXAT2ichPgSPA1KBVzkgAJjW5Mwljsj+5W4CNwCLLSO15EdlrVM7hQRl4FR2BS8AurfUuYJmIPGzsnTuTKquAIaZE5JCxufb5UqdXLWBS9s40sK/Vau0znscm4D7DXVlieR+wHzgIXBqlicwZ31ng77XW/wjcDGwG/idj956IHDMgeX/YdslVAZgMzrwAvNlqtd4i+z0/F4HHRnUiLeydE1rrEzmxr5eMtJ0ZZSYAUGE5RSAXaoQpCBQAEygAJlAATKAAmEABMIECBcAECoAJFAATKAAmUABMoACYQIECYAIFwAQKgAkUABMoACbQ9Ur/OwDPb/OYDgsfJAAAAABJRU5ErkJggg==); - background-size: 80px 80px; - background-repeat: no-repeat; - } - } - - .items-listing { - h3, h4 { - margin: 0; - font-weight: normal; - color: @black-a70; - } - - h3 { - color: @black-a80; - margin-top: 2px; - font-size: 1em; - } - } - - .manifest-title h3 { - line-height: 1.2em; - height: 3.6em; - position: relative; - overflow: hidden; - - &:after { - content: ""; - text-align: right; - position: absolute; - bottom: 0; - right: 0; - width: 20%; - height: 1.2em; - /*background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 50%);*/ - } - } - - .item-info { - position: absolute; - bottom: 0; - display: table; - width: 100%; - } - - .item-info-row { - display: table-row; - } - - .repo-label, .canvas-count { - display: table-cell; - white-space: nowrap; - font-size: .85em; - vertical-align: bottom; - color: @gray; - } - - .canvas-count { - text-align: right; - } - - .repo-image, .select-metadata, .preview-images { - float:left; - margin-right:15px; - height: 80px; - } - - .preview-thumb { - display: inline-flex; - position: absolute; - } - - .preview-images { - margin-right:0; - } - - .preview-image { - background-color: @gray; - box-shadow: 0px 0px 5px @black-a70; - float:left; - margin-right:15px; - min-height: 25px; - min-width: 25px; - /*transition: all 0.1s ease-out; ?*/ - - &:hover { - box-shadow: 0px 0px 5px @blue-bfff; - transform: scale(1.1); - transition: all 0.6 ease-out; - } - } - - .remaining { - line-height:80px; - opacity: 0.5; - text-align: center; - box-sizing: border-box; - vertical-align: middle; - width: 20px; - } - - #load-controls { - margin-top: 20px; - - &:after { - content: ""; - display: table; - clear: both; - } - } - - #manifest-search-form { - float:left; - - label { - margin-right: 6px; - } - } - - #url-load-form { - float: right; - - input[type="text"] { - width: 250px; - margin: 0 5px; - } - } - - #load-controls input[type="submit"]{ - height: 29px; - } - - #manifest-search i { - position: absolute; - left: 0; - color: @black; - } - - #manifest-search-form input:focus, - #url-load-form input:focus, - #url-load-form input[type="submit"]:hover { - outline: none; - border-color: @deep-sky-blue; - } - - #manifest-search i { - width:25px; - height:25px; - color:red; - border: 1px solid @red; - } - - .select-results { - height:100%; - overflow-y: scroll; - margin-top: 10px; - border-top: 1px solid @gray; - } -} diff --git a/css/less/panels/metadata-view.less b/css/less/panels/metadata-view.less deleted file mode 100644 index 7da12b1a9b993a7c4047e88220d005c4df8677de..0000000000000000000000000000000000000000 --- a/css/less/panels/metadata-view.less +++ /dev/null @@ -1,54 +0,0 @@ -.mirador-container { - .mirador-viewer .sub-title { - border-bottom: 1px solid @gray-b1; - color: @black-33; - font-weight: bold; - margin: 10px 20px 5px 20px; - padding: 0 5px 5px 0; - font-size: 120%; - text-transform: uppercase; - } - - .mirador-viewer .metadata-listing { - width: 100%; - margin: 0; - padding: 0px 20px 10px 20px; - box-sizing: border-box; - } - - .mirador-viewer .metadata-item { - padding: 10px 0 5px 0; - } - - .mirador-viewer .metadata-label, .mirador-viewer .metadata-value { - line-height: 1.5; - } - - .mirador-viewer .metadata-label { - color: @gray-66; - font-style: italic; - text-transform: uppercase; - } - - .mirador-viewer .metadata-value { - vertical-align: bottom; - } - - .mirador-viewer .metadata-listing a { - border-bottom: 1px dotted @blue-005ebd; - } - - .mirador-viewer .metadata-listing a:hover { - border-bottom: 1px dotted @gray-dd; - } - - .mirador-metadata-view-nav-toolbar { - float: right; - margin-right: 5px; - } - - .metadata-logo { - max-height: 120px; - max-width: 100%; - } -} diff --git a/css/less/panels/search-tab.less b/css/less/panels/search-tab.less deleted file mode 100644 index 5fc6f36c17cdef90583730f6df46a307c5e5933c..0000000000000000000000000000000000000000 --- a/css/less/panels/search-tab.less +++ /dev/null @@ -1,44 +0,0 @@ -.mirador-container { - - .search-results { - padding:0 5px 0 0; - margin:0; - position:absolute; - height: 100%; - - select { - margin: 5px 0 10px 0; - } - } - - .search-results-list { - position: relative; - height: 100%; - - .search-results-messages { - border-top: 1px solid @gray-b1; - padding-top: 10px; - margin-top: 10px; - } - - .search-results-count { - font-size: .85em; - } - - .search-results-container { - overflow-y: scroll; - position: absolute; - height: 70%; - } - - .result-wrapper { - margin-bottom: 5px; - - .result-paragraph { - .highlight { - background-color: rgb(255, 255, 0); - } - } - } - } -} \ No newline at end of file diff --git a/css/less/panels/side-panel.less b/css/less/panels/side-panel.less deleted file mode 100644 index b66f1c41cd4af902484fef98fe57aaf525ff949b..0000000000000000000000000000000000000000 --- a/css/less/panels/side-panel.less +++ /dev/null @@ -1,292 +0,0 @@ -.mirador-container { - .sidePanel { - position:absolute; - width:280px; - left: 0; - bottom: 0; - top:0; - background-color: @gray-ef; - border-right: 1px solid @light-gray; - box-sizing: border-box; - overflow: hidden; - transition: all 0.3s ease; - padding: 10px; - opacity:1; - transition: all 0.2s ease-out; - transform: translateX(0); - - .tabGroup { - list-style-type:none; - margin:0; - padding:0; - } - - .tab { - padding: 8px; - margin-right: 2px; - display: inline-block; - cursor: pointer; - background: @gray-dd; - border-width: 1px 1px 0 1px; - border-color: @gray-b1; - border-style: solid; - color: @gray-66; - font-size: .9em; - } - - .tab:not(.selected):hover { - background: @light-gray; - color: @black-33; - } - - .tab.selected { - font-weight: bold; - color: @black-33; - background: @gray-ef; - border-top-width: 1px; - border-top-style: solid; - border-top-color: deepskyblue; - } - - .annotationListItem { - list-style-type: none; - border-left:0; - border-right:0; - padding:10px 10px 10px 10px; - } - - .annotationListItem:after { - content: ""; - height: 1px; - background: linear-gradient(to right, @black-a00 0%, @gray-93 50%, @black-a00 100%); - - display: block; - margin-top: 10px; - } - - .annotationListItem.focused { - background-color: @gray-dd; - border-left: 3px solid @light-blue; - } - - .annotationListItem:hover { - background-color: @gray-dd; - border-left: 3px solid @light-blue; - } - - .annotationListItem.selected { - background-color: @gray-cc; - border-left: 3px solid @deep-sky-blue; - } - - a:hover { - text-decoration: none; - } - - h2 { - font-size: 1em; - } - - h3 { - font-size: .9em; - } - - h4 { - font-size: .8em; - } - - h1, h2, h3, h4 { - margin:0; - padding:0; - font-weight: normal; - } - - h1:hover, h2:hover, h3:hover, h4:hover { - } - } - - .sidePanel.minimized { - transition: all 0.2s ease-out; - transform: translateX(-280px); - opacity:0; - border:none; - } - - .tabContentArea { - position: relative; - width:270px; - height:100%; - float: left; - background-color: @gray-ef; - border-right: 1px solid @light-gray; - box-sizing: border-box; - overflow: hidden; - transition: all 0.3s ease; - margin-top: 8px; - } - - .annotationsPanel { - margin: 0; - margin-bottom: 10px; - padding-bottom: 100px; - overflow-y: scroll; - width: 280px; - padding-right: 10px; - position: absolute; - box-sizing: border-box; - left: 0; - top: 0px; - bottom: 0; - list-style-type: none; - font-size: 75%; - - ul { - padding:0; - margin:0; - } - } - - .toc { - margin:0; - overflow-y: scroll; - width: 270px; - padding:0; - position:absolute; - box-sizing: border-box; - left:0; - top:0px; - bottom:0; - list-style-type:none; - margin-bottom: 30px; /* fix overflow-y bug when .tabGroup is present */ - - a.toc-link { - color: black; - padding: 8px; - padding-left: 8px; - display: block; - - &:hover { - cursor: pointer; - background-color: @gray-dd; - display:block; - overflow:hidden; - } - } - - ul { - margin:0; - padding:0; - box-sizing: border-box; - list-style-type:none; - width:100%; - } - - li { - cursor: pointer; - box-sizing: border-box; - display:block; - position:relative; - margin-left:8px; - margin-bottom: 5px; - border-left: 4px solid @gray-ef; - - &.open { - } - - &.selected { - cursor: pointer; - overflow:hidden; - border-left: 4px solid @deep-sky-blue; - transition: all 0.2s ease-out; - } - } - - > li { - margin-left: 0; - } - } - - .toc-link i { - color: @black-a40; - margin-right:0.4em; - transition: all 0.2s linear; - - &:hover { - color: black; - } - } - - .toc-caret { - padding: 0.4em; - margin: -0.4em; - } - - .toc li.has-child i.star { - display: none; - } - - .toc li.leaf-item i.toc-caret { - display: none - } - - .toc li.leaf-item i.star { - display: inline-block; - } - - .toc li.selected>h2 .toc-link, - .toc li.selected>h3 .toc-link, - .toc li.selected>h4 .toc-link, - .toc li.selected>h5 .toc-link { - font-weight: bold; - } - - .toc li.selected>h2 .toc-link .star, - .toc li.selected>h3 .toc-link .star, - .toc li.selected>h4 .toc-link .star, - .toc li.selected>h5 .toc-link .star, - .toc li.hovered>h2 .toc-link .star, - .toc li.hovered>h3 .toc-link .star, - .toc li.hovered>h4 .toc-link .star, - .toc li.hovered>h5 .toc-link .star { - color:black; - } - - .toc li.open>h2 .toc-link .toc-caret, - .toc li.open>h3 .toc-link .toc-caret, - .toc li.open>h4 .toc-link .toc-caret, - .toc li.open>h5 .toc-link .toc-caret { - transition: all 0.2s linear; - transform: rotate(90deg); - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - /* Internet Explorer */ - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - } - - .toc li.selected-parent { - } - - .toc li.hovered { - border-left: 4px solid @deep-sky-blue; - } - - .toc li:hover { - border-left: 4px solid @blue-99e5ff; - } - - .toc-link:hover .star { - color:black; - } - - // .toc li:hover>h2 a.toc-link, .toc li:hover>h3 a.toc-link, .toc li:hover>h4 a.toc-link, .toc li:hover>h5 a.toc-link, .toc li:hover>h6 a.toc-link { - // font-weight: bold; - // } - - /* - .toc li:hover > h2 a { - font-weight: bold; - } - */ -} diff --git a/css/less/panels/workspace-select-menu.less b/css/less/panels/workspace-select-menu.less deleted file mode 100644 index adc2a7000ef44fc208443c67ecedec93b81fcd07..0000000000000000000000000000000000000000 --- a/css/less/panels/workspace-select-menu.less +++ /dev/null @@ -1,71 +0,0 @@ -.mirador-container { - #workspace-select-menu { - position: absolute; - height: 100%; - width: 100%; - background-color: @white-a94; - display: none; - overflow: hidden; - z-index: 6; - } - - #workspace-select-menu { - background-color: @black-33; - text-align:center; - padding:20%; - padding-top:0; - box-sizing:border-box; - - h1 { - color: @light-gray; - padding-bottom: 3%; - font-weight: normal; - } - h2, h3 { - color: @light-gray; - } - } - - .select-grid { - width:60%; - min-width:300px; - position:relative; - margin:auto; - } - - .grid-row { - content: ""; - display: table; - clear: both; - margin: 0 auto; - } - - .grid-item { - height: 50px; - width: 50px; - float: left; - padding: 4px; - display: block; - - .grid-icon { - background: @gray; - height: 50px; - width: 50px; - border-radius: 7px; - display: block; - transition: all 0.2s ease-out; - margin:auto; - } - } - - .grid-item.hovered .grid-icon { - background: @deep-sky-blue; - box-shadow: 0 0 10px @black; - transform: scale(1.1) translateY(-10px) translateX(-5px); - transition: all 0.2s ease-out; - } - - .grid-text { - display:none; - } -} diff --git a/css/less/status-bar.less b/css/less/status-bar.less deleted file mode 100644 index 435e23fccb06a7d3671d181a0d67a9d48b1165e4..0000000000000000000000000000000000000000 --- a/css/less/status-bar.less +++ /dev/null @@ -1,26 +0,0 @@ -.mirador-container { - .mirador-status-bar { - background-color: @gray-cc; - border-top: 1px solid @black; - bottom: 0; - color: @black; - position: fixed; - } - - .mirador-status-bar-msg-left, - .mirador-status-bar-msg-right { - color: @gray-66; - float: left; - overflow: hidden; - padding: 4px 10px; - text-align: left; - text-overflow: ellipsis; - white-space: nowrap; - width: 40%; - } - - .mirador-status-bar-msg-right { - float: right; - text-align: right; - } -} diff --git a/css/less/theme/colors.less b/css/less/theme/colors.less deleted file mode 100644 index d71834836e6020d67c21c6242f5e6cebea93b150..0000000000000000000000000000000000000000 --- a/css/less/theme/colors.less +++ /dev/null @@ -1,43 +0,0 @@ -@white: #fff; -@white-a94: rgba(255,255,255,0.94); -@white-a90: rgba(255,255,255,0.9); -@white-fa: #fafafa; -@gray-f0: #f0f0f0; -@gray-ef: #efefef; -@gray-ee: #eee; -@gray-dd: #dddddd; -@gray-c8-a70: rgba(200,200,200,0.7); // #c8c8c8 -@light-gray: lightGray; // #d3d3d3 -@gray-cc: #ccc; -@gray: gray; // #bebebe -@gray-b1: #b1b1b1; -@gray-aa: #aaa; -@gray-99: #999; -@gray-93: rgba(147, 147, 147, 1); // #939393 -@gray-91: #929191; -@gray-66: #666; -@gray-55: #555; -@black-33: #333; -@black-22: #222; -@black-a00: rgba(0, 0, 0, 0); // transparent -@black-a30: rgba(0, 0, 0, 0.3); -@black-a40: rgba(0, 0, 0, 0.4); -@black-a50: rgba(0, 0, 0, 0.5); -@black-a60: rgba(0, 0, 0, 0.6); -@black-a70: rgba(0, 0, 0, 0.7); -@black-a77: rgba(0, 0, 0, 0.77); -@black-a80: rgba(0, 0, 0, 0.8); -@black: #000; - -@red: red; // #ff0000 -@orange-red: orangered; // #ff4500 - -@light-blue: lightBlue; // #add8e6 -@deep-sky-blue: deepskyblue; // #00bfbf -@blue-bfff: rgba(0, 191, 255, 1); // #00bfff -@blue-bfff-a70: rgba(0, 191, 255, 0.7); -@blue-99e5ff: #99e5ff; -@blue-005ebd: #005ebd; -@blue-5edbff: rgba(94, 219, 255, 1); // #5edbff - -@transparent: rgba(255, 255, 255, 0); diff --git a/css/less/theme/fonts.less b/css/less/theme/fonts.less deleted file mode 100644 index 4a828bcb457d001899af5e7fe71024746754d652..0000000000000000000000000000000000000000 --- a/css/less/theme/fonts.less +++ /dev/null @@ -1,7 +0,0 @@ -.mirador-container { - .mirador-viewer, - .mirador-main-menu-bar, - .mirador-status-bar { - font-family: 'Open Sans', 'Lucida Grande', Verdana, Arial, sans-serif; - } -} diff --git a/css/less/views/gallery-view.less b/css/less/views/gallery-view.less deleted file mode 100644 index cb1a26aedadbec2ae9ce1d5919d920eb3ad0fd3c..0000000000000000000000000000000000000000 --- a/css/less/views/gallery-view.less +++ /dev/null @@ -1,100 +0,0 @@ -.mirador-container { - .mirador-viewer ul.listing-thumbs { - clear: both; - list-style: none; - overflow: auto; - padding: 0; - } - - .mirador-viewer ul.listing-thumbs li { - box-sizing:border-box; - float: left; - margin: 0 0 15px 0; - padding: 10px 10px 10px 10px; - /*transition: all 0.05s ease-out;*/ - } - - .mirador-viewer ul.listing-thumbs li img { - background-color: @gray-ee; - min-height: 25px; - min-width: 25px; - margin: 0 auto; - display: block; - box-sizing:border-box; - /*transition: all 0.2 ease-out;*/ - } - .mirador-viewer ul.listing-thumbs li img:hover { - border:3px solid @blue-bfff-a70; - transform: scale(1.1); - cursor: pointer; - transition: all 0.2 ease-out; - } - - .mirador-viewer ul.listing-thumbs li .thumb-label { - clear: both; - color: @gray-99; - font-size: 12px; - margin: 0 auto; - max-width: 125px; - text-align: left; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; - text-align: center; - } - - .mirador-viewer .thumbnails-view-slider { - float: left; - margin: 10px 15px; - width: 60px; - } - - .mirador-thumbnails-view-nav-toolbar { - float: right; - margin-right: 5px; - } - - .mirador-widget-toolbar .ui-slider-horizontal { - height: .4em; - } - - .mirador-widget-toolbar .ui-slider-handle { - top: -0.5em; - } - - .hud-control .ui-slider-handle .percent { - position: absolute; - left: 17px; - top:-0.3em; - display:block; - color: white; - text-shadow: 0 0 3px @black; - } - - .hud-control .ui-slider, .ui-slider-vertical { - width: 3px; - margin-left: 27px; - margin-bottom: 20px; - height:100px; - } - - .hud-control .ui-slider-vertical .ui-slider-handle { - width: 0.7em; - height: 0.7em; - border-radius: 40px; - margin-bottom: -.35em; - } - - .hud-control .ui-slider-vertical .ui-slider-handle:focus { - outline:0; - } - - .hud-control .ui-slider-range { - background: @deep-sky-blue; - } - - .thumbnail-rtl{ - float: right !important; - } - -} diff --git a/css/less/views/image-view.less b/css/less/views/image-view.less deleted file mode 100644 index 7f0f6b106a9d3b9656b5e3b38d0736835f59d937..0000000000000000000000000000000000000000 --- a/css/less/views/image-view.less +++ /dev/null @@ -1,138 +0,0 @@ -.mirador-container { - .mirador-image-view-nav-toolbar { - position:relative; - float: right; - margin-right: 5px; - } - - .mirador-image-view-bg { - background-color: @black; - } - - .mirador-image-scale { - bottom:25px; - display:block; - position:absolute; - z-index:2; - } - - .axis path, .axis line { - fill: none; - shape-rendering: crispEdges; - stroke: white; - stroke-width: 2px; - } - - text { - fill: white; - text-shadow: 0px 0px 3px @black; - } - - .mirador-image-dimensions { - margin-right:10px; - margin-top:7px; - position:absolute; - right:0; - top:0; - } - - .mirador-image-view-physical-dimensions { - border: none; - font-weight: bold; - height: 16px; - margin:0; - outline: none; - overflow-wrap: normal; - overflow:hidden; - padding:0; - resize: none; - vertical-align: top; - width: 40px; - text-align: center; - } - - .mirador-image-view-physical-dimensions:hover, - .mirador-image-view-physical-dimensions:focus, - .mirador-image-dimensions.noDimensionsSet .mirador-image-view-physical-dimensions { - border-bottom: 2px solid @orange-red; - height: 16px; - margin-bottom: -2px; - transition: all .2s ease-out; - } - .noDimensionsWarning { - display: none; - margin-right:10px; - } - .mirador-image-dimensions.noDimensionsSet .noDimensionsWarning { - color: @black-a50; - display: inline-block; - } - - .mirador-image-view-physical-dimensions:focus { - background-color: @gray-c8-a70; - box-shadow: 0 0 4px @gray-c8-a70; - -webkit-transform: scale(1.2); - -moz-transform: scale(1.2); - transform: scale(1.2); - } - - .mirador-image-dimensions .units { - cursor: context-menu; - } - - .mirador-image-dimensions .units:hover { - height:16px; - border-bottom:2px solid @orange-red; - margin-bottom:-2px; - transition: all .2s ease-out; - } - - .mirador-image-dimensions .unit-selector { - position:absolute; - display:none; - } - - .mirador-image-dimensions .unit-selector.active { - display:block; - } - - /* scale - ----------------*/ - .mirador-image-scale.hidden { - display:none; - } - - /* image choice controls - ------------------------*/ - - .mirador-image-view-choices { - list-style: none; - max-height: 350px; - overflow: auto; - padding: 0; - } - - .mirador-image-view-choices li { - margin: 0; - padding: 0; - } - - .mirador-image-view-choices li a { - padding-left: 12px; - } - - .mirador-image-view-choice { - background-repeat: no-repeat; - height: 6px; - background-position: 0px 6px; - width: 6px; - } - - .mirador-image-view-choice { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ5OEI2ODFFMkIxMUUzOUExN0IyREY1RTI1MUQ0QiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ5OEI2OTFFMkIxMUUzOUExN0IyREY1RTI1MUQ0QiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRFRDk4QjY2MUUyQjExRTM5QTE3QjJERjVFMjUxRDRCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRFRDk4QjY3MUUyQjExRTM5QTE3QjJERjVFMjUxRDRCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fRx/ZQAAAHRJREFUeNpi/P//P0NnZ2cNAwNDOgMEzCwvL29h5uTkrFFSUkqOiorSMjMzm/L27ds5W7Zs4WUCqfT09NTh4eH5BsIgNkiMiQENMDIy/gdRIImZO3bsuPL161fOz58/c23fvv0qSIwRankt1PK/UMvbAAIMALeqLWb/azLQAAAAAElFTkSuQmCC); - } - - .mirador-image-view-choice-selected { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ5OEI2QzFFMkIxMUUzOUExN0IyREY1RTI1MUQ0QiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ5OEI2RDFFMkIxMUUzOUExN0IyREY1RTI1MUQ0QiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRFRDk4QjZBMUUyQjExRTM5QTE3QjJERjVFMjUxRDRCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRFRDk4QjZCMUUyQjExRTM5QTE3QjJERjVFMjUxRDRCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9DJqAgAAAF1JREFUeNpitLS0ZHj69GktAwNDJgMETJeWlm5mZmJiAgk2ATEvFDt+/vz5H6OcnNwzIEeSARU8Z2LADhiZ+fn5uUDa0SS6mbW0tA4BzfwP5GgC8Ucg7gJa3gIQYAChCRXFhBXUngAAAABJRU5ErkJggg==); - } -} diff --git a/css/less/views/scroll-view.less b/css/less/views/scroll-view.less deleted file mode 100644 index 11bbbde1446324fea373c27b4f1458ff206f3aa6..0000000000000000000000000000000000000000 --- a/css/less/views/scroll-view.less +++ /dev/null @@ -1,37 +0,0 @@ -.mirador-container { - ul.scroll-listing-thumbs { - clear: both; - list-style: none; - padding: 0; - white-space: nowrap; - } - - ul.scroll-listing-thumbs li { - box-sizing:border-box; - margin: 0 0 15px 0; - padding: 10px 10px 10px 10px; - /*transition: all 0.05s ease-out;*/ - display: inline-block; - } - - ul.scroll-listing-thumbs li img { - background-color: @gray-ee; - min-height: 25px; - min-width: 25px; - margin: 0 auto; - display: block; - } - - ul.scroll-listing-thumbs li .thumb-label { - clear: both; - color: @gray-99; - font-size: 12px; - margin: 0 auto; - max-width: 200px; - text-align: left; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; - text-align: center; - } -} diff --git a/css/less/window.less b/css/less/window.less deleted file mode 100644 index 6ce39067c1b1d0903304bfe01849e6c23cfe7e91..0000000000000000000000000000000000000000 --- a/css/less/window.less +++ /dev/null @@ -1,106 +0,0 @@ -.mirador-container { - .window { - position:absolute; - width:100%; - height:100%; - overflow: hidden; - background-color: @black-33; - top: 0%; - z-index: 1; - } - - .manifest-info { - overflow: auto; - background: @white-fa; - - .mirador-btn { - font-size: .8em; - } - } - - .content-container { - position: absolute; - bottom:0; - left:0; - right:0; - top:0; - margin-top:34px; - box-sizing: border-box; - } - - .view-container { - margin-left: 280px; - height: 100%; - position:relative; - transition:all 0s ease; - - &.tranisition { - } - - &.focus-max-width { - margin-left: 0px; - } - - &.focus-side-panel-minimized { - margin-left: 0px; - } - } - - .overlay { - display: none; - position: absolute; - right: 0; - top: 0; - box-sizing: border-box; - background-color: @white-a90; - z-index: 5; - width: 45%; - overflow-y: scroll; - height: 80%; - word-wrap: break-word; - font-size: 90%; - } - - .thumbnail-view, .image-view, .book-view, .scroll-view { - height: 100%; - width: 100%; - background-color: black; - display: none; - overflow-y: scroll; - } - - .image-view, .book-view { - overflow: hidden; - } - - .scroll-view { - overflow-y: hidden; - overflow-x: scroll; - } - - .focus-max-height { - height: 100%; - } - - .focus-bottom-panel-minimized { - height: 95%; - } - - .image-list { - right: 0; - } - - .slot-controls { - left: 0; - } - - .menu-divider { - color: @gray-b1; - margin: 0px; - height: 0px; - } - - .v-direction-rtl { - direction: rtl; - } -} diff --git a/css/less/workspace.less b/css/less/workspace.less deleted file mode 100644 index 8d297f604ed917e30eafdd1751c01ad28fba44b8..0000000000000000000000000000000000000000 --- a/css/less/workspace.less +++ /dev/null @@ -1,106 +0,0 @@ -.mirador-container { - .workspace-container { - position: absolute; - left:0; - right:0; - top:0; - bottom:0; - overflow: hidden; - box-sizing: border-box; - margin: 3px; - } - - /* invisible layout slot styling */ - .layout-slot { - position: absolute; - margin: 0; - padding: 0; - box-sizing: border-box; - } - - /* Slot Scaffolding */ - .slot { - width:100%; - height:100%; - box-shadow: inset 0 0 35px @black; - overflow: hidden; - box-sizing:border-box; - - .remove-slot-option { - position: absolute; - top: 0; - left: 0; - z-index: 1; - margin: 10px; - color: @gray; - cursor: pointer; - } - - .remove-slot-option:hover { - float: left; - margin: 10px; - color: @light-gray; - } - - h1 { - color: @gray; - text-align: center; - font-weight: normal; - margin: 0px; - } - - &:hover h1 { - color: @light-gray; - } - } - - .plus { - font-size: 170px; - font-weight: bold; - margin-bottom: 2%; - } - - .slotIconContainer { - position: relative; - top: 50%; - transform: translateY(-50%); - width: 100%; - overflow: hidden; - pointer-events: none; - } - - .slot:hover, .slot.focused, .slot.draggedOver { - box-shadow: inset 0 0 35px @blue-5edbff; - } - - .slot.draggedOver .dropMeMessage, .slot.draggedOver .dropIcon { - display: block; - } - - .dropMeMessage, .dropIcon { - display: none; - } - - .slot.draggedOver .addItemText, .slot.draggedOver .plus span { - display: none; - } - - .addItemLink { - display: block; - position: absolute; - top: 0; - bottom: 0; - right: 0; - left: 0; - cursor: pointer; - } - - .dropMask { - position: absolute; - top: 0; - bottom: 0; - right: 0; - left: 0; - display: none; - } -} \ No newline at end of file diff --git a/css/material-icons.css b/css/material-icons.css deleted file mode 100644 index f61a125f3881bedb6fb853bdd9502473029d4d51..0000000000000000000000000000000000000000 --- a/css/material-icons.css +++ /dev/null @@ -1,38 +0,0 @@ -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - src: url('../fonts/MaterialIcons-Regular.eot'); /* For IE6-8 */ - src: local('Material Icons'), - local('MaterialIcons-Regular'), - url('../fonts/MaterialIcons-Regular.woff2') format('woff2'), - url('../fonts/MaterialIcons-Regular.woff') format('woff'), - url('../fonts/MaterialIcons-Regular.ttf') format('truetype'); -} - -.material-icons { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 24px; /* Preferred icon size */ - display: inline-block; - width: 1em; - height: 1em; - line-height: 1; - text-transform: none; - letter-spacing: normal; - word-wrap: normal; - white-space: nowrap; - direction: ltr; - - /* Support for all WebKit browsers. */ - -webkit-font-smoothing: antialiased; - /* Support for Safari and Chrome. */ - text-rendering: optimizeLegibility; - - /* Support for Firefox. */ - -moz-osx-font-smoothing: grayscale; - - /* Support for IE. */ - font-feature-settings: 'liga'; -} diff --git a/css/normalize.css b/css/normalize.css deleted file mode 100644 index 2fa5c305a5173e5b0d1788b9b2c1783e848a0376..0000000000000000000000000000000000000000 --- a/css/normalize.css +++ /dev/null @@ -1,391 +0,0 @@ -/*! normalize.css v2.1.2 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined in IE 8/9. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/** - * Correct `inline-block` display not defined in IE 8/9. - */ - -audio, -canvas, -video { - display: inline-block; -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari 5, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; - border:0; - border-bottom:1px solid rgba(0,0,0,0.4); -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Correct font family set oddly in Safari 5 and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 1em; -} - -/** - * Improve readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre-wrap; -} - -/** - * Set consistent quote types. - */ - -q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9. - */ - -img { - border: 0; -} - -/** - * Correct overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari 5. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * 1. Correct font family not being inherited in all browsers. - * 2. Correct font size not being inherited in all browsers. - * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. - */ - -button, -input, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. - * Correct `select` style inheritance in Firefox 4+ and Opera. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * 1. Address box sizing set to `content-box` in IE 8/9. - * 2. Remove excess padding in IE 8/9. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * 1. Remove default vertical scrollbar in IE 8/9. - * 2. Improve readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md deleted file mode 100644 index 41d73af1dfa762be1f5cb4ee23ff27a91f278e11..0000000000000000000000000000000000000000 --- a/docs/SUMMARY.md +++ /dev/null @@ -1,4 +0,0 @@ -# Table of Contents -* [Getting Started](docs/getting-started.md) -* [API and Events reference](docs/api-reference.md) -* [Source Code Tours](docs/code-tours.md) diff --git a/docs/api-reference.md b/docs/api-reference.md deleted file mode 100644 index 39bd17bcffb8c6f4dfa2cba405f2d7749c237f2e..0000000000000000000000000000000000000000 --- a/docs/api-reference.md +++ /dev/null @@ -1,2 +0,0 @@ -# API Reference -In Progress diff --git a/docs/code-tours.md b/docs/code-tours.md deleted file mode 100644 index 47ec0eecb72d5455ca3a9608f7e952d2421126e8..0000000000000000000000000000000000000000 --- a/docs/code-tours.md +++ /dev/null @@ -1,3 +0,0 @@ -# Source Code Tours - -In Progress diff --git a/docs/events-reference.md b/docs/events-reference.md deleted file mode 100644 index 339b84577aafb076fac758968a3fbbf649132eb6..0000000000000000000000000000000000000000 --- a/docs/events-reference.md +++ /dev/null @@ -1 +0,0 @@ -# Events Reference diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100644 index f7ed08466ab284e2ba13379ce68b8c7f1ef2f10c..0000000000000000000000000000000000000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,690 +0,0 @@ -## Getting Started Tutorials -### **Simple Viewer Installation ** - -One of the most common configurations is to create an HTML page in which Mirador takes up the full width and height of the page, with all of the default features activated. There are only a few configuration options that are required to get a fully featured Mirador instance: the [container](https://github.com/IIIF/mirador/wiki/Configuration-Guides#the-container) and the [manifests](https://github.com/IIIF/mirador/wiki/Configuration-Guides#manifests) to load into Mirador. - -#### The Container - -To initialize Mirador, it needs to be attached to an existing HTML **div** through that element's **id**. You also need to explicitly set that element's width and height. In this example, we are using the full width and height of the page. - -```` html -<!DOCTYPE html> -<html lang="en"> - <head> - <title>Simple Viewer</title> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <style> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - <link rel="stylesheet" type="text/css" href="build/mirador/css/mirador-combined.css"> - <script src="build/mirador/mirador.min.js"></script> - </head> - <body> - <div id="viewer"></div> - <script type="text/javascript"> - $(function() { - Mirador({ - id: "viewer", - data: [/* Manifests and collections here */] - }); - }); - </script> - </body> -</html> -```` - - - - -Changing the height and width of Mirador's root element allows you to place it in an HTML page with other content. - -#### Manifests and Collections - -There are several different ways to add content to your Mirador instance. - -The first way is to pass an object into the data array that identifies the desired manifest URI: - -```` javascript -Mirador({ - id: "viewer", - data: [ - { manifestUri: "http://iiif/id/and/uri/of/your/manifest.json", location: "My Repository" } - ] -}); -```` - -Second, you can pass in an object pointing to a collection URI, which contains a list of manifests that Mirador will parse: - -```` javascript -Mirador({ - id: "viewer", - data: [{ - "collectionUri": - "http://iiif/id/and/uri/of/your/collection.json" -} -]); -```` - -The current version of Mirador supports collections of any nesting depth. Collections are displayed on the content tree as folder entries, which can be clicked on to display manifests filed under them. Sub-collections can also be accessed by clicking on the drop-down caret (if available). - - - -Within the application itself, there are two other ways for end users to add manifests to Mirador: - -1. If showAddFromURLBox has not been disabled, an end user can add a known IIIF manifest or collection URL through the Add new object from URL box: - - - -2. Mirador can handle an end user dropping a IIIF manifest into a window using [IIIF Drag-and-drop](http://zimeon.github.io/iiif-dragndrop/): - - - -Specifying Which Manifest Will Open - -By default, Mirador is configured to open with a single window. You can specify which manifest will be open in that window by using the windowObjects key. The windowObjects key expects an array of objects. Within the object you can name the manifest that will be opened with loadedManifest and even specify which canvas the viewer will focus on with canvasID. The default view is the ImageView viewType. If you want the viewer to open with a different view, you need specify this with "viewType" (e.g., "ThumbnailsView"). Other options that can be added to windowObjects can be found in the [Complete Configuration API](https://github.com/IIIF/mirador/wiki/Complete-Configuration-API#loaded-objects). - -```` javascript -Mirador({ id: "viewer", - data: [{ - manifestUri: "http://iiif/id/and/uri/of/your/manifest.json", - location: "My Repository" - }], - windowObjects: [{ - loadedManifest: "http://iiif/id/and/uri/of/your/manifest.json", - canvasID: "http://iiif/id/and/uri/of/your/canvas/canvas-id", - viewType: "ImageView" - }] - }); -```` - - - -#### View Type - -There are four possible viewTypes in the current version of Mirador: ImageView (displayed above), BookView, ThumbnailsView, and ScrollView. - -##### BookView - -Like the [previous ](https://github.com/IIIF/mirador/wiki/Configuration-Guides#specifying-which-manifest-will-open)viewType, this configuration provides a minimal, zooming reader, similar to the Internet Archive Bookreader. The instance is configured to show a specific book of the developer's choosing, displayed in a 2-page spread. - -```` javascript -Mirador({ -id: "viewer", - data: [{ - manifestUri: "http://iiif/id/and/uri/of/your/manifest.json", - location: "My Repository" - }], - windowObjects: [{ - loadedManifest: "http://iiif/id/and/uri/of/your/manifest.json", - canvasID: "http://iiif/id/and/uri/of/your/canvas/canvas-id", - viewType: "BookView" - }] -}); -```` - - - -##### ThumbnailsView - -The ThumbnailsView viewType configuration displays thumbnail images of all of the pages of the designated book laid out in a grid pattern, from which the user can select and click on a page to view more closely. Unlike the previous viewTypes, the images in ThumbnailsView are not zoomable. - - - -##### ScrollView - -Like the previous viewType, ScrollView displays thumbnail images of the designated book, this time in a side-scrolling format, for the user to select from for closer viewing. As with ThumbnailsView, ScrollView does not display zoomable images. - - - -#### Describing Layouts - -By default, Mirador opens with a single viewing window. However, it is possible to configure Mirador to open up with any number of windows, positioned in a grid, using the layout option. If you want to specify which window a specific manifest loads into, use slotAddress in windowObjects. Otherwise, Mirador, will arbitrarily load objects into windows based on a first-come, first-served basis. To create an instance of Mirador that opens two windows side by side and places a manifest in each window use this: - -```` javascript -Mirador({ -id: "viewer", -layout: "1x2", -data: [{ -manifestUri: "http://iiif.lib.harvard.edu/manifests/drs:5981093", -location: "Harvard University" -}, -{ -manifestUri: "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", -location: "BnF" -}], -windowObjects: [{ -loadedManifest: "http://iiif.lib.harvard.edu/manifests/drs:5981093", -slotAddress: "row1.column1", -viewType: "ImageView" -}, -{ -loadedManifest: "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", -slotAddress: "row1.column2", -viewType: "ImageView" -}] -); -```` - - - -It is also possible to have non-grid layouts in Mirador. You can create these custom layouts using a drop down menu in Mirador: - - - - - -### Configuring Mirador Path - -By default, Mirador looks for its associated images, translations and other associated files at the relative path ./build/mirador. If you wish to serve Mirador from another location, you can change this by setting the buildPath option: - -```` javascript -Mirador({ - id: "viewer", - buildPath: "http://cdn.yoursite.com/mirador", - data: [{ - manifestUri: "http://iiif/id/and/uri/of/your/manifest.json", - location: "My Repository" - }] -}); -```` - -## **Zen Mode** - -A barebones version of the viewer can be created by turning off the top menu bar, the sidebar, and the bottom thumbnails bar. Doing so prevents the user from opening other objects, spawning more workspace slots or windows, and closing the current window. - - - -The configuration and initialisation for this mode looks like this: - -```` javascript -Mirador({ - id: "viewer", - buildPath: "", - data: [{ - manifestUri: "http://iiif/id/and/uri/of/your/manifest.json", - location: "My Repository" - } - // For a working example, try: - // { manifestUri: "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", location: "Stanford University" } - ], - mainMenuSettings: { - show: false - } - windowObjects: [{ - loadedManifest: "http://same/iiif/id/as/above/to/your/manifest.json", - canvasID: "http://iiif/id/and/uri/of/your/canvas/canvas-id", - // For a working example, try: - // loadedManifest: "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", - // canvasID: "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/canvas/canvas-8", - viewType: "ImageView", - displayLayout: false, - bottomPanel: false, - bottomPanelAvailable: false, - bottomPanelVisible: false, - sidePanel: false, - annotationLayer: false - }] -}); -```` - -## Embedding - -### Iframe - -To embed a Mirador instance in an iframe, create a [full-screen](https://github.com/IIIF/mirador/wiki/Configuration-Guides#full-screen-with-all-options) instance with any configuration options you need. Your iframe element will look something like this: - -```` html -<iframe title="Mirador" src="*URL to Mirador instance*" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true"></iframe> -```` - -You can change the size and style of the iframe as you need to, and Mirador will exist within its bounds. Adding the allowfullscreen attributes allows the fullscreen option in Mirador to work. If you choose to disable this in Mirador, you do not need to have these attributes in your iframe. - -With the current version of Mirador, you can embed any number of viewers this way. - - - -### Inside a div on same web page - -You can also embed Mirador inside a div. To do this, embed both the mirador-combined.css and mirador.js, the fixed-size div and the call to Mirador() as you would do with a full-screen setup. If you have set a CSS margin attribute in your main body tag, you need to add !important to it to prevent the mirador-combined.css from overriding it. - -With the current version of Mirador, you can only embed one viewer this way. If you want to embed multiple viewers you must use iframes. - -```` html -<!DOCTYPE html> -<html lang="en"> -<head> - <title>Embedding in a div</title> - <style type="text/css"> - html { - background-color: #999; - } - body { - background-color: #fff; - padding: 1em 0; - margin: 0 5% !important; - width: 90%; - } - #viewer { - display: block; - width: 90%; - height: 600px; - margin: 1em 5%; - position: relative; - } - h1, h2 { - text-align: center; - } - </style> - <link rel="stylesheet" type="text/css" href="build/mirador/css/mirador-combined.css"> - <script src="build/mirador/mirador.min.js"></script> -</head> -<body> - <h1>Embedded Default Viewer</h1> - <h2>The following viewer has been added using default settings.</h2> - <div id="viewer" allowfullscreen="allowfullscreen"></div> - <script type="text/javascript"> - $(function() { - Mirador({ - id: "viewer", - data: [/* … */] - }); - }); - </script> -</body> -</html> -```` - - - -### Annotation Saving (Creating an endpoint adaptor) - -To build an endpoint adaptor, you can start with the template provided in js/src/annotations/endpoint.js. All endpoint adaptors must implement the following functions: - -<table> - <tr> - <td>Function</td> - <td>Description</td> - <td>Parameters</td> - <td>Success</td> - <td>Fail</td> - </tr> - <tr> - <td></td> - <td></td> - <td></td> - <td></td> - <td></td> - </tr> - <tr> - <td>Search</td> - <td>Search for annotations that satisfy the parameters specified in options</td> - <td>options -successCallbackerrorCallback</td> - <td>successCallback</td> - <td>errorCallback</td> - </tr> - <tr> - <td>Delete</td> - <td>Delete the annotation with the given annotation ID</td> - <td>annotationID -successCallback -errorCallback</td> - <td>successCallback</td> - <td>errorCallback</td> - </tr> - <tr> - <td>Update</td> - <td>Submit the annotation as an edit</td> - <td>oaAnnotation -successCallback -errorCallback</td> - <td>successCallback</td> - <td>errorCallback</td> - </tr> - <tr> - <td>Create</td> - <td>Submit the annotation as a new annotation</td> - <td>oaAnnotation -successCallback -errorCallback</td> - <td>successCallback</td> - <td>errorCallback</td> - </tr> -</table> - - -Before calling JSON.stringify() on an annotationsList entry, remember to delete its endpoint key to avoid a circular reference to the endpoint. Afterwards, remember to add it back. - -#### Example implementation with local storage - -##### Search - -For simplicity, assume that you don't need additional parameters beyond the URI of the canvas to request. - -```` javascript -search: function(options, successCallback, errorCallback) { - var _this = this; - this.annotationsList = []; //clear out current list - try { - - //Load the list of annotations under the canvas URI from local storage (if entry exists) - var data = localStorage.getItem(options.uri); - if (data) { - _this.annotationsList = JSON.parse(data); - } - - //Attach a reference to this endpoint to each entry - //Don't forget to do this or the annotation won't respond - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - // Done - // Run the callback if specified, otherwise resolve the endpoint's data state - if (typeof successCallback === "function") { - successCallback(_this.annotationsList); - } - else { - _this.dfd.resolve(true); - } - } - - // Catching errors - // Run the callback if specified, otherwise perform some default action or show an error log - catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - else { - console.log("There was an error searching this endpoint"); - } - } -} -```` - -##### Delete - -Search for the deleted ID from the annotation list for the current canvas, remove its entry from the annotation list and overwrite the storage's copy of the annotation list with it. - -```` javascript -deleteAnnotation: function(annotationID, successCallback, errorCallback) { - var _this = this, - key = _this.annotationsList[0].on.full; //Find current canvas URI from loaded annotation list - - try { - // Create a new annotation list without the deleted ID - _this.annotationsList = jQuery.grep(_this.annotationsList, function(value, index) { - return value['@id'] !== annotationID; - }); - - // Remove endpoint reference before JSON.stringify - // IMPORTANT: Failure to do this would result in a circular reference error! - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - // Rewrite the local storage annotation list with updated version - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - // Add back endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - // Run success callback if specified - if (typeof successCallback === "function") { - successCallback(); - } - } - - // Unsuccessful, run error callback if specified - catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } -} -```` - -##### Update - -From the given Open Annotation item, find its ID and canvas ID, then replace the corresponding entry in the annotation list with the same ID. Once done, overwrite the storage's copy of the annotation list. - - -```` javascript -update: function(oaAnnotation, successCallback, errorCallback) { - var _this = this, - - // Find canvas ID and annotation ID - key = oaAnnotation.on.full, - annotationID = oaAnnotation['@id']; - - try { - // If annotation list isn't loaded, reload - if (_this.annotationsList.length === 0) { - _this.annotationsList = _this.getAnnotationList(key); - } - - // Find the matching annotation in the array and update it - jQuery.each(_this.annotationsList, function(index, value) { - if (value['@id'] === annotationID) { - _this.annotationsList[index] = oaAnnotation; - return false; - } - }); - - // Remove endpoint reference before JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - // Overwrite storage with updated annotation list - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - // Add back endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - // Done, run success callback if specified - if (typeof successCallback === "function") { - successCallback(oaAnnotation); - } - } - - // Failed, run error callback if specified - catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - -} -```` - -##### Create - -From the given Open Annotation item, find its canvas ID, then add it to the annotation list under that canvas. Once done, overwrite the storage's copy of the annotation list and return the newly inserted annotation in Open Annotation form. - -```` javascript -create: function(oaAnnotation, successCallback, errorCallback) { - var _this = this, - - // Find the canvas to annotate on - key = oaAnnotation.on.full; - - try { - // Reload the annotation list if empty - if (_this.annotationsList.length === 0) { - _this.annotationsList = _this.getAnnotationList(key); - } - - // Generate a new annotation ID and insert into annotation list - oaAnnotation["@id"] = key + '/' + Date.now(); - _this.annotationsList.push(oaAnnotation); - - // Remove endpoint reference before JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - // Overwrite the local storage with updated annotation list - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - // Add endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - // Done, run success callback if specified - if (typeof successCallback === "function") { - successCallback(oaAnnotation); - } - } - - // Failed, run error callback if specified - - catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } -} -```` - -##### Using remote state endpoint - -To begin using your new remote state endpoint, add the key annotationStorageEndpoint to your setup, and enable annotationLayer and annotationCreation under windowObjects: - -```` javascript -$(function() { - Mirador({ - id: "viewer", - data: [/* Manifests and collections here *], - annotationEndpoint: { - name: 'Local Storage Endpoint', - module: 'LocalStorageEndpoint', - options: { /* Options here */ } - }, - windowObjects: [{ - annotationLayer: true, - annotationCreation: true, - annotationState: 'annoOncreateOn' - }] - }); -}); -```` - - - -For more example implementations involving annotation servers, see the following built-in endpoint adaptors: - -* js/src/annotations/catchEndpoint.js (CATCH) - -* js/src/annotations/simpleASEndpoint.js (Simple Annotation Server) - -### Remote State Saving - -To integrate with your own state storage for bookmarking and viewer state sharing, start with the following template (see Implementor comments below): - -```` javascript -(function($) { - - // IMPLEMENTOR: Rename RemoteStateEndpoint - $.RemoteStateEndpoint = function(opts) { - this.options = { - /* IMPLEMENTOR: Set up parameter defaults here (e.g. URLs, user credentials, etc.) */ - }; - jQuery.extend(this.options, opts); - }; - - // IMPLEMENTOR: Rename RemoteStateEndpoint - - $.RemoteStateEndpoint.prototype = { - readSync: function(blobID) { - /* IMPLEMENTOR: Return the JSON object referenced by <blobID> here */ - }, - save: function(blob) { - var deferred = jQuery.Deferred(), - /* IMPLEMENTOR: Save the given JSON object <blob> and return a jQuery deferred promise that will resolve to the blob ID identifying it. */ - } - - }; - -}(Mirador)); -```` - -This can be added as an additional .js file in js/src/utils, or embedded on the page where Mirador is being run. - -All remote state endpoints must implement the following functions: - -* readSync(blobId): Return the JSON object stored under the specified blob ID. - -* save(blob): Save the given JSON object blob and return a jQuery deferred promise that resolves to the blob ID identifying it. - -##### Example implementation with local storage - -Default options: For this example, the integrator should have a choice between local storage or session storage, and an optional prefix before each entry. - -```` javascript -$.MyLocalStateEndpoint = function(opts) { - this.options = { - storage: window.localStorage, - prefix: "" - }; - jQuery.extend(this.options, opts); -}; -```` - -##### readSync: Read from the specified storage - -```` javascript -readSync: function(blobId) { - - return JSON.parse(this.options.storage.getItem(blobId)); - -} - -##### save: Save to the specified storage under the current time - -```` javascript -save: function(blob) { - - var deferred = jQuery.Deferred(), - date = new Date, - _date = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDay() + "-" + date.getHours() + "-" + date.getMinutes() + "-" + date.getSeconds(); - - this.options.storage.setItem(this.options.prefix + _date, JSON.stringify(blob)); - deferred.resolve(this.options.prefix + _date); - - return deferred.promise(); -} -```` - -To begin using your new remote state endpoint, add the key jsonStorageEndpoint to your setup, and enable saveSession and mainMenuSettings.buttons.bookmark: - -```` javascript -$(function() { - Mirador({ - id: "viewer", - data: [/* Manifests and collections here */], - mainMenuSettings: { - buttons: { - bookmark: true - } - }, - jsonStorageEndpoint: { - name: "My local time state endpoint", - module: "MyLocalStateEndpoint", - options: { /* Set parameters here in key-value form */ } - }, - saveSession: true - }); -}); -```` - diff --git a/docs/image_0.png b/docs/image_0.png deleted file mode 100644 index 4b354a50e7e6cbcb31ad3560e37f21f9d40ac199..0000000000000000000000000000000000000000 Binary files a/docs/image_0.png and /dev/null differ diff --git a/docs/image_1.png b/docs/image_1.png deleted file mode 100644 index 7cce41094ce20a7ff0b6a6a4d54a4679b7006ab8..0000000000000000000000000000000000000000 Binary files a/docs/image_1.png and /dev/null differ diff --git a/docs/image_10.png b/docs/image_10.png deleted file mode 100644 index 49d4eaf8247780ee4b6044cfc67aa64b460c61d5..0000000000000000000000000000000000000000 Binary files a/docs/image_10.png and /dev/null differ diff --git a/docs/image_11.png b/docs/image_11.png deleted file mode 100644 index 4dad6a90737f3f9d8f5cdd74f46ee11e7c4c92a4..0000000000000000000000000000000000000000 Binary files a/docs/image_11.png and /dev/null differ diff --git a/docs/image_12.png b/docs/image_12.png deleted file mode 100644 index 1674cd389cc1ebb4aae9ebeb9919e8b19ba5fc3a..0000000000000000000000000000000000000000 Binary files a/docs/image_12.png and /dev/null differ diff --git a/docs/image_13.png b/docs/image_13.png deleted file mode 100644 index 3c8c50cbe8130918db79b5c7b04adeb324146365..0000000000000000000000000000000000000000 Binary files a/docs/image_13.png and /dev/null differ diff --git a/docs/image_14.png b/docs/image_14.png deleted file mode 100644 index 974fd7237ce8581050958497bb3412eb2e838f23..0000000000000000000000000000000000000000 Binary files a/docs/image_14.png and /dev/null differ diff --git a/docs/image_2.gif b/docs/image_2.gif deleted file mode 100644 index 288a02686af90bd271d83952d09f7f7dbb68a645..0000000000000000000000000000000000000000 Binary files a/docs/image_2.gif and /dev/null differ diff --git a/docs/image_3.png b/docs/image_3.png deleted file mode 100644 index 655518a8573e9d771a919933e1cd6bf2f51567df..0000000000000000000000000000000000000000 Binary files a/docs/image_3.png and /dev/null differ diff --git a/docs/image_4.png b/docs/image_4.png deleted file mode 100644 index d5ff5c2492afc0d42f8505c42c1ab29726a28e23..0000000000000000000000000000000000000000 Binary files a/docs/image_4.png and /dev/null differ diff --git a/docs/image_5.png b/docs/image_5.png deleted file mode 100644 index 36e88a583de64afc34c5997f9606a8022fcca933..0000000000000000000000000000000000000000 Binary files a/docs/image_5.png and /dev/null differ diff --git a/docs/image_6.png b/docs/image_6.png deleted file mode 100644 index 40f88bf1f403fffd27a8380ac5c0874c3810e8df..0000000000000000000000000000000000000000 Binary files a/docs/image_6.png and /dev/null differ diff --git a/docs/image_7.png b/docs/image_7.png deleted file mode 100644 index 43f3f31336fa46e189b7cd2ce9e12c2959f12031..0000000000000000000000000000000000000000 Binary files a/docs/image_7.png and /dev/null differ diff --git a/docs/image_8.png b/docs/image_8.png deleted file mode 100644 index 6ea309bd910781ec1059ece9fe85d5f1fdfc0456..0000000000000000000000000000000000000000 Binary files a/docs/image_8.png and /dev/null differ diff --git a/docs/image_9.png b/docs/image_9.png deleted file mode 100644 index 89b7d1b6613a68d8c521924f00c7976e82cb9808..0000000000000000000000000000000000000000 Binary files a/docs/image_9.png and /dev/null differ diff --git a/docs/image_add_object_box.png b/docs/image_add_object_box.png deleted file mode 100644 index 8730389612b4ec204eb0b11480be05c0a3b9d2b9..0000000000000000000000000000000000000000 Binary files a/docs/image_add_object_box.png and /dev/null differ diff --git a/docs/image_collection_tree.png b/docs/image_collection_tree.png deleted file mode 100644 index d2528a2ef39b23a69e80a193efdf2e7d71d2e233..0000000000000000000000000000000000000000 Binary files a/docs/image_collection_tree.png and /dev/null differ diff --git a/examples/configs/Zen1x1.html b/examples/configs/Zen1x1.html deleted file mode 100644 index 5ff48944f1d997eb7d3b10d31a3579e173426de9..0000000000000000000000000000000000000000 --- a/examples/configs/Zen1x1.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body { padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #viewer { background: #333 url(images/debut_dark.png) left top repeat; width: 100%; height: 100%; position: fixed; } - </style> -</head> -<body> - <div id="viewer"></div> - - <script src="../../build/mirador/mirador.js"></script> - <script type="text/javascript"> - $(function() { - - Mirador({ - "id": "viewer", - "mainMenuSettings" : { - 'show' : false - }, - "data": [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University"}, - ], - "windowObjects": [ - { - "loadedManifest": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", - "layoutOptions": { - "close": false, - "slotRight": false, - "slotLeft": false, - "slotAbove": false, - "slotBelow": false - } - } - ] - }); - - }); - </script> -</body> -</html> diff --git a/examples/configs/blank.html b/examples/configs/blank.html deleted file mode 100644 index f7a89ddd692ee2aae48162ae7ae78390bf6c532c..0000000000000000000000000000000000000000 --- a/examples/configs/blank.html +++ /dev/null @@ -1,70 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body { padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #viewer { background: #333 url(images/debut_dark.png) left top repeat; width: 100%; height: 100%; position: fixed; } - </style> -</head> -<body> - <div id="viewer"></div> - - <script src="../../build/mirador/mirador.js"></script> - <script type="text/javascript"> - $(function() { - - Mirador({ - "id": "viewer", - "currentWorkspaceType": "none", - "data": [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont23", "location": "Yale University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/via:olvwork576793", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:14033171", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:46909368", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:18259372", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:48331776", "location": "Harvard University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont43", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS109", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS310", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS360", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS525", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS748", "location": "Yale University"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS758_5"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley113", "location": "Yale University"}, - // { "manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json" }, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley850"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSDouce18"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSGoughLiturg_3"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSLaudMisc_204"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Auct_D_inf_2_11"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley716"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley861"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley920"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Douce231"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_GoughLiturg_19"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_Liturg_f_21"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_liturg_f_2"}, - {"manifestUri": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/manifest.json"}, - //{"manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudLat_4"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudMisc_188"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSliturg_e_17"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek127Ka"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek128Kb"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/MarstonMS22"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Osborna44"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Ripoll078"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/SanktGallenStiftsbibliothek673Sg"} - ], - }); - - }); - </script> -</body> -</html> diff --git a/examples/configs/bookReading.html b/examples/configs/bookReading.html deleted file mode 100644 index 8047109433bc3f30b07fce047adbdd8b944a70b3..0000000000000000000000000000000000000000 --- a/examples/configs/bookReading.html +++ /dev/null @@ -1,81 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body { padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #viewer { background: #333 url(images/debut_dark.png) left top repeat; width: 100%; height: 100%; position: fixed; } - </style> -</head> -<body> - <div id="viewer"></div> - - <script src="../../build/mirador/mirador.js"></script> - <script type="text/javascript"> - $(function() { - - Mirador({ - "id": "viewer", - "currentWorkspaceType": "bookReading", - "data": [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont23", "location": "Yale University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/via:olvwork576793", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:14033171", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:46909368", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:18259372", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:48331776", "location": "Harvard University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont43", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS109", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS310", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS360", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS525", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS748", "location": "Yale University"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS758_5"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley113", "location": "Yale University"}, - // { "manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json" }, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley850"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSDouce18"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSGoughLiturg_3"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSLaudMisc_204"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Auct_D_inf_2_11"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley716"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley861"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley920"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Douce231"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_GoughLiturg_19"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_Liturg_f_21"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_liturg_f_2"}, - {"manifestUri": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/manifest.json"}, - //{"manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudLat_4"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudMisc_188"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSliturg_e_17"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek127Ka"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek128Kb"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/MarstonMS22"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Osborna44"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Ripoll078"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/SanktGallenStiftsbibliothek673Sg"} - ], - "windowObjects": [ - { - "loadedManifest": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", - "viewType" : "BookView", - "canvasID": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json", - //"bottomPanel" : false, - "sidePanel" : false - //"availableViews" : ['ThumbnailsView', 'ImageView', 'BookView'] - //"overlay" : false - } - ] - }); - - }); - </script> -</body> -</html> diff --git a/examples/configs/compare.html b/examples/configs/compare.html deleted file mode 100644 index e4d15274cf58e614f5b9842e3415957a4c83ef15..0000000000000000000000000000000000000000 --- a/examples/configs/compare.html +++ /dev/null @@ -1,81 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body { padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #viewer { background: #333 url(images/debut_dark.png) left top repeat; width: 100%; height: 100%; position: fixed; } - </style> -</head> -<body> - <div id="viewer"></div> - - <script src="../../build/mirador/mirador.js"></script> - <script type="text/javascript"> - $(function() { - - Mirador({ - "id": "viewer", - "currentWorkspaceType": "compare", - "data": [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont23", "location": "Yale University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/via:olvwork576793", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:14033171", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:46909368", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:18259372", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:48331776", "location": "Harvard University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont43", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS109", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS310", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS360", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS525", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS748", "location": "Yale University"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS758_5"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley113", "location": "Yale University"}, - // { "manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json" }, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley850"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSDouce18"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSGoughLiturg_3"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSLaudMisc_204"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Auct_D_inf_2_11"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley716"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley861"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley920"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Douce231"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_GoughLiturg_19"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_Liturg_f_21"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_liturg_f_2"}, - {"manifestUri": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/manifest.json"}, - //{"manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudLat_4"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudMisc_188"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSliturg_e_17"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek127Ka"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek128Kb"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/MarstonMS22"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Osborna44"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Ripoll078"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/SanktGallenStiftsbibliothek673Sg"} - ], - "windowObjects": [ - { - "loadedManifest": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", - "viewType" : "ImageView", - "canvasID": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/canvas/canvas-12" - //"bottomPanel" : false, - //"sidePanel" : false, - //"availableViews" : ['ThumbnailsView', 'ImageView', 'BookView'] - //"overlay" : false - } - ] - }); - - }); - </script> -</body> -</html> diff --git a/examples/configs/images/debut_dark.png b/examples/configs/images/debut_dark.png deleted file mode 100644 index 17a4d6b42defcc8ebbad993bc91a2030f6c690ed..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/debut_dark.png and /dev/null differ diff --git a/examples/configs/images/harvard_logo.png b/examples/configs/images/harvard_logo.png deleted file mode 100644 index fa299ee27a36910eab235ca0cb9772a125da719c..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/harvard_logo.png and /dev/null differ diff --git a/examples/configs/images/iiif_logo.png b/examples/configs/images/iiif_logo.png deleted file mode 100644 index a96001d6b926cc15cd8b213aa3efaddb844cce45..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/iiif_logo.png and /dev/null differ diff --git a/examples/configs/images/loading.gif b/examples/configs/images/loading.gif deleted file mode 100644 index ed63d0b65b0469a481cb48101a39f80f034326b3..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/loading.gif and /dev/null differ diff --git a/examples/configs/images/mirador-icons.png b/examples/configs/images/mirador-icons.png deleted file mode 100644 index a010ccc888530f312d7ffe43f6b89bad646a35e1..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/mirador-icons.png and /dev/null differ diff --git a/examples/configs/images/noise.png b/examples/configs/images/noise.png deleted file mode 100644 index 009dc4c3d6da2aba72f7e230daede88f350665d0..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/noise.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fit-hover.png b/examples/configs/images/openseadragon/fit-hover.png deleted file mode 100644 index 9a6c5e9f6affa16aa006eefbe104a48147d26278..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fit-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fit.png b/examples/configs/images/openseadragon/fit.png deleted file mode 100644 index 1796f8e37ac5c03e4c787d13f34be5799b1d1709..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fit.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/full-screen-hover.png b/examples/configs/images/openseadragon/full-screen-hover.png deleted file mode 100644 index cd7b0e79bf2b15cfdd8141d31d04a6e0463d2434..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/full-screen-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/full-screen.png b/examples/configs/images/openseadragon/full-screen.png deleted file mode 100644 index 9bbfc3267ad3be20f010729584be5602ca5b7b0b..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/full-screen.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fullpage_grouphover.png b/examples/configs/images/openseadragon/fullpage_grouphover.png deleted file mode 100644 index 3ca4e1e3c366d44e9dbbde415f6addaef941b129..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fullpage_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fullpage_hover.png b/examples/configs/images/openseadragon/fullpage_hover.png deleted file mode 100644 index d08eb2d0b077754ea9ad8906bf3c376f3fb178d4..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fullpage_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fullpage_pressed.png b/examples/configs/images/openseadragon/fullpage_pressed.png deleted file mode 100644 index 0ee45b5fc68aea79b511fa35b2a0be387aa35351..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fullpage_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/fullpage_rest.png b/examples/configs/images/openseadragon/fullpage_rest.png deleted file mode 100644 index 3172005c6e1f43e5183c589197112aa135320cc8..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/fullpage_rest.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/home_grouphover.png b/examples/configs/images/openseadragon/home_grouphover.png deleted file mode 100644 index 204e1cc94b5057e04a42f0d4483ba0c96c05e7cc..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/home_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/home_hover.png b/examples/configs/images/openseadragon/home_hover.png deleted file mode 100644 index ec218a00a0b18b6997b37b5f3c1ddc4ec413ca6f..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/home_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/home_pressed.png b/examples/configs/images/openseadragon/home_pressed.png deleted file mode 100644 index 4439508bc6ebb6c3d9aee81ae8df4da592bd1cb6..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/home_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/home_rest.png b/examples/configs/images/openseadragon/home_rest.png deleted file mode 100644 index 009d1bbf4c410ca89adb6bdb3e1fa8192db2ff41..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/home_rest.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next-hover.png b/examples/configs/images/openseadragon/next-hover.png deleted file mode 100644 index d8c8b28607c37f3b0601fcfee3aa7dd09eea8ef5..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next.png b/examples/configs/images/openseadragon/next.png deleted file mode 100644 index 80dd7fc858607a6d8ea8d85f61bd011309e8dc6f..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next_grouphover.png b/examples/configs/images/openseadragon/next_grouphover.png deleted file mode 100644 index 8d83d8a142854fedbee4bccee591fafb5be7f179..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next_hover.png b/examples/configs/images/openseadragon/next_hover.png deleted file mode 100644 index ba24ca988f1536d596c595fd0beef8b985a17c35..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next_pressed.png b/examples/configs/images/openseadragon/next_pressed.png deleted file mode 100644 index 95f169d65150b1e5162585bd0695e4617363afbe..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/next_rest.png b/examples/configs/images/openseadragon/next_rest.png deleted file mode 100644 index 5ead544b5d7ef6de16e83f9d28aee515666fcb89..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/next_rest.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous-hover.png b/examples/configs/images/openseadragon/previous-hover.png deleted file mode 100644 index c74ea6f572c9c8c08ce4bac57360a930d3deefa1..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous.png b/examples/configs/images/openseadragon/previous.png deleted file mode 100644 index 3c1e8c7d6fdbfbbab2c78ed1648fa8510ae2a3ba..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous_grouphover.png b/examples/configs/images/openseadragon/previous_grouphover.png deleted file mode 100644 index 016e63957a87778ba2562ec7a91dee22248590d8..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous_hover.png b/examples/configs/images/openseadragon/previous_hover.png deleted file mode 100644 index d4a5c1552c7a8a5e7ddae0d2a94f235e00e44c62..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous_pressed.png b/examples/configs/images/openseadragon/previous_pressed.png deleted file mode 100644 index f999fe498500de4f891f898be1fc09c368162864..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/previous_rest.png b/examples/configs/images/openseadragon/previous_rest.png deleted file mode 100644 index 9716dac67b7ccd4c68b427eeca7de3548eed0726..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/previous_rest.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoom-in-hover.png b/examples/configs/images/openseadragon/zoom-in-hover.png deleted file mode 100644 index 290349bfb39f97b99715f471612b164ebaf63db0..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoom-in-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoom-in.png b/examples/configs/images/openseadragon/zoom-in.png deleted file mode 100644 index cac6a9b7ac12b5a5375a4db2bb323b8b8ea35c1b..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoom-in.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoom-out-hover.png b/examples/configs/images/openseadragon/zoom-out-hover.png deleted file mode 100644 index 5ff751edaff941d9a0cacd66212e0c80ac6b5688..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoom-out-hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoom-out.png b/examples/configs/images/openseadragon/zoom-out.png deleted file mode 100644 index ae60172c430c9a30be55fb824771c459683fa5e2..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoom-out.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomin_grouphover.png b/examples/configs/images/openseadragon/zoomin_grouphover.png deleted file mode 100644 index c985d0f958d78c8233c4fc3c3a48a240392c8ea8..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomin_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomin_hover.png b/examples/configs/images/openseadragon/zoomin_hover.png deleted file mode 100644 index 3cab721f1bd5b0360dd1eac094c36a409b517738..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomin_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomin_pressed.png b/examples/configs/images/openseadragon/zoomin_pressed.png deleted file mode 100644 index 9c3a75169cefbc031e7b1f0d0baf7472580552c3..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomin_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomin_rest.png b/examples/configs/images/openseadragon/zoomin_rest.png deleted file mode 100644 index f4219a50aed7503f63e9b553cf6159e2cca36d11..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomin_rest.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomout_grouphover.png b/examples/configs/images/openseadragon/zoomout_grouphover.png deleted file mode 100644 index 46d21b3e507e7363b4e8afd0e77343814ad63748..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomout_grouphover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomout_hover.png b/examples/configs/images/openseadragon/zoomout_hover.png deleted file mode 100644 index 7b924c26d8f587e030293036a7230d3faba88918..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomout_hover.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomout_pressed.png b/examples/configs/images/openseadragon/zoomout_pressed.png deleted file mode 100644 index c028db72405a925425228819f7e348df331d9afd..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomout_pressed.png and /dev/null differ diff --git a/examples/configs/images/openseadragon/zoomout_rest.png b/examples/configs/images/openseadragon/zoomout_rest.png deleted file mode 100644 index a13e07de798ec32c5bcbec32001427df6bade43b..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/openseadragon/zoomout_rest.png and /dev/null differ diff --git a/examples/configs/images/sul_logo.jpeg b/examples/configs/images/sul_logo.jpeg deleted file mode 100644 index 339af5625f2b8a423009fac4f88c992e0f2b1e59..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/sul_logo.jpeg and /dev/null differ diff --git a/examples/configs/images/yale_logo.jpeg b/examples/configs/images/yale_logo.jpeg deleted file mode 100644 index da9c2ebfc823d9268b18ca927c9bfddefeb43b5e..0000000000000000000000000000000000000000 Binary files a/examples/configs/images/yale_logo.jpeg and /dev/null differ diff --git a/examples/configs/singleObject.html b/examples/configs/singleObject.html deleted file mode 100644 index 855ef2f6d83bdc5262fd8d58b2e1c8f7e0c115a0..0000000000000000000000000000000000000000 --- a/examples/configs/singleObject.html +++ /dev/null @@ -1,81 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body { padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #viewer { background: #333 url(images/debut_dark.png) left top repeat; width: 100%; height: 100%; position: fixed; } - </style> -</head> -<body> - <div id="viewer"></div> - - <script src="../../build/mirador/mirador.js"></script> - <script type="text/javascript"> - $(function() { - - Mirador({ - "id": "viewer", - "currentWorkspaceType": "singleObject", - "data": [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont23", "location": "Yale University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/via:olvwork576793", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:14033171", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:46909368", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:18259372", "location": "Harvard University"}, - { "manifestUri": "http://oculus-dev.harvardx.harvard.edu/manifests/drs:48331776", "location": "Harvard University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont43", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS109", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS310", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS360", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS525", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS748", "location": "Yale University"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS758_5"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley113", "location": "Yale University"}, - // { "manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json" }, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSBodley850"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSDouce18"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSGoughLiturg_3"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSLaudMisc_204"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Auct_D_inf_2_11"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley716"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley861"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Bodley920"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Douce231"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_GoughLiturg_19"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_Liturg_f_21"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_Lat_liturg_f_2"}, - {"manifestUri": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/manifest.json"}, - //{"manifestUri": "http://www.shared-canvas.org/impl/demo1d/res/manifest.json"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudLat_4"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMS_LaudMisc_188"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BodleianMSliturg_e_17"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek127Ka"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/CologneErzbischflicheDizesanundDombibliothek128Kb"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/MarstonMS22"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Osborna44"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Ripoll078"}, - // { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/SanktGallenStiftsbibliothek673Sg"} - ], - "windowObjects": [ - { - "loadedManifest": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", - "viewType" : "ImageView", - "canvasID": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/canvas/canvas-12" - //"bottomPanel" : false, - //"sidePanel" : false, - //"availableViews" : ['ThumbnailsView', 'ImageView', 'BookView'] - //"overlay" : false - } - ] - }); - - }); - </script> -</body> -</html> diff --git a/examples/configureDynamically.html b/examples/configureDynamically.html deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/examples/embedded-in-page/config-1.js b/examples/embedded-in-page/config-1.js deleted file mode 100644 index 6116ca08c3f377d4feafe4aa7862a2ed2d4fea9a..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/config-1.js +++ /dev/null @@ -1,36 +0,0 @@ -(function ($) { - - $.config_1 = { - "id" : "mirador_viewer_1", - "saveSession" : false, - "layout" : "1x1", - "data" : [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University" } - ], - "buildPath" : "/", - "i18nPath" : "mirador/locales/", - "imagesPath" : "mirador/images/", - "logosPath" : "mirador/images/logos/", - "mainMenuSettings" : { - "show" : true, - "buttons" : { - "bookmark" : false, - "fullScreenViewer": true, - "options": false - }, - "userButtons" : [ - ], - "userLogo" : { - "label" : "Example 1", - "attributes" : { "id" : "logo", "href" : "http://iiif.io", "target" : "_blank" } - } - }, - "windowObjects" : [], - "annotationLayer" : true, - "annotationEndpoint" : { - "name": "Local Storage", - "module": "LocalStorageEndpoint" - } - }; - -})(MiradorExample); diff --git a/examples/embedded-in-page/config-2.js b/examples/embedded-in-page/config-2.js deleted file mode 100644 index 2c9f306d0ca2be4428ba81063903b23a641a8113..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/config-2.js +++ /dev/null @@ -1,33 +0,0 @@ -(function ($) { - - $.config_2 = { - "_comment" : "Zen mode", - "id" : "mirador_viewer_1", - "layout" : "1x1", - "mainMenuSettings" : { - "show" : false - }, - "data" : [ - { - "manifestUri" : "http://oculus-dev.harvardx.harvard.edu/manifests/huam:200515", - "location": "Harvard University" - } - ], - "windowObjects" : [ - { - "loadedManifest" : "http://oculus-dev.harvardx.harvard.edu/manifests/huam:200515", - "canvasID" : "http://oculus-dev.harvardx.harvard.edu/manifests/huam:200515/canvas/canvas-43183641.json", - "viewType" : "ImageView", - "displayLayout" : false, - "bottomPanel" : false, - "sidePanel" : false, - "annotationLayer" : false - } - ], - "buildPath" : "/", - "i18nPath" : "mirador/locales/", - "imagesPath" : "mirador/images/", - "logosPath" : "mirador/images/logos/" - }; - -})(MiradorExample); diff --git a/examples/embedded-in-page/config-3.js b/examples/embedded-in-page/config-3.js deleted file mode 100644 index 0e3c43c9d95cd4d66da6bcafec44ec1f5e751a6c..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/config-3.js +++ /dev/null @@ -1,50 +0,0 @@ -(function ($) { - - $.config_3 = { - "_comment": "Multi-slot", - "id" : "mirador_viewer_1", - "saveSession" : false, - "layout" : "2x2", - "mainMenuSettings" : { - "show" : false - }, - "data" : [ - { - "manifestUri" : "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", - "location" : "Stanford University" - }, - { - "manifestUri" : "http://oculus-dev.harvardx.harvard.edu/manifests/huam:200515", - "location": "Harvard University" - }, - { - "manifestUri" : "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", - "location": "BnF" - } - ], - "windowObjects" : [ - { - "loadedManifest" : "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", - "viewType" : "ThumbnailsView" - }, - { - "loadedManifest" : "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", - "viewType" : "ImageView" - }, - { - "loadedManifest" : "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", - "viewType" : "ScrollView" - }, - { - "loadedManifest" : "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b84539771/manifest.json", - "//1" : "slotAddress: row1.column2.row1", - "viewType" : "BookView" - } - ], - "buildPath" : "/", - "i18nPath" : "mirador/locales/", - "imagesPath" : "mirador/images/", - "logosPath" : "mirador/images/logos/" - } - -})(MiradorExample); diff --git a/examples/embedded-in-page/embedded.css b/examples/embedded-in-page/embedded.css deleted file mode 100644 index 33f1df2bc804f7d48da35023032b7930f4e1e06b..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/embedded.css +++ /dev/null @@ -1,27 +0,0 @@ -.mirador_container { - position: relative; /* Necessary when mirador viewer div's position is absolute */ - border: 5px solid green; - margin: 10px; - width: 90%; - height: 600px; -} - -.mirador_viewer { - /*display: block !important;*/ - - /* Position is "fixed" in mirador.css. - * We cannot confine it within a div with a fixed position. - */ - position: absolute !important; - - /* width=100%, top=0, bottom=0: necessary to stretch Mirador to - * the containing div - */ - width: 100%; - top: 0; - bottom: 0; -} - -h1, p { - margin-left: 10px; -} diff --git a/examples/embedded-in-page/embedded.js b/examples/embedded-in-page/embedded.js deleted file mode 100644 index 487ec47f2f38cfd7cd8686449f672514efac8eb6..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/embedded.js +++ /dev/null @@ -1,32 +0,0 @@ -window.MiradorExample = {}; - -(function ($) { - - jQuery(document).ready(function () { - $.app = new $.App(); - }); - - $.App = function () { - this.configSelect = jQuery('#config_select'); - - this.reloadMirador(); - this.bindEvents(); - }; - - $.App.prototype = { - reloadMirador: function () { - console.log('config: ' + this.configSelect.val()); - var config = $[this.configSelect.val()]; - Mirador(config); - }, - - bindEvents: function () { - var _this = this; - - this.configSelect.change(function () { - _this.reloadMirador(); - }); - } - } - -})(MiradorExample); diff --git a/examples/embedded-in-page/index.html b/examples/embedded-in-page/index.html deleted file mode 100644 index 093f63182da0ed4383c4fd1973f990f237228c88..0000000000000000000000000000000000000000 --- a/examples/embedded-in-page/index.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"/> - <link rel="stylesheet" type="text/css" href="embedded.css"/> - <script type="text/javascript" src="../../build/mirador/mirador.js"></script> - <script type="text/javascript" src="embedded.js"></script> - <script type="text/javascript" src="config-1.js"></script> - <script type="text/javascript" src="config-2.js"></script> - <script type="text/javascript" src="config-3.js"></script> - <title>Embedded Mirador Viewers</title> -</head> -<body> - <h1>Mirador Embedded</h1> - <p> - Change config: - <select id="config_select"> - <option value="config_1">Single slot</option> - <option value="config_2">Zen mode</option> - <option value="config_3" selected>Multi Slot</option> - </select> - </p> - <div class="mirador_container"> - <div id="mirador_viewer_1" class="mirador_viewer"></div> - </div> -</body> -</html> diff --git a/examples/embedded-multiple-instances/config-1.js b/examples/embedded-multiple-instances/config-1.js deleted file mode 100644 index 9d5bacd29e75a846814d9fd16fe634a085115de8..0000000000000000000000000000000000000000 --- a/examples/embedded-multiple-instances/config-1.js +++ /dev/null @@ -1,31 +0,0 @@ -(function ($) { - - $.config_1 = { - "id" : "mirador_viewer_1", - "saveSession" : false, - "layout" : "1x1", - "data" : [ - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json", "location": "Stanford University" } - ], - "buildPath" : "/build/mirador/", - "mainMenuSettings" : { - "show" : true, - "buttons" : { - "bookmark" : false, - "fullScreenViewer": true, - "options": false - }, - "userButtons" : [ - ], - "userLogo" : { - "label" : "Example 1", - "attributes" : { "id" : "logo", "href" : "http://iiif.io", "target" : "_blank" } - } - }, - "annotationEndpoint" : { - "name": "Local Storage", - "module": "LocalStorageEndpoint" - } - }; - -})(MiradorExample); diff --git a/examples/embedded-multiple-instances/config-2.js b/examples/embedded-multiple-instances/config-2.js deleted file mode 100644 index 442ce7df41a29e7a7282762ac2cced1b5e42a2e7..0000000000000000000000000000000000000000 --- a/examples/embedded-multiple-instances/config-2.js +++ /dev/null @@ -1,31 +0,0 @@ -(function ($) { - - $.config_2 = { - "id" : "mirador_viewer_2", - "saveSession" : false, - "layout" : "1x1", - "data" : [ - { "manifestUri": "http://iiif.biblissima.fr/manifests/ark:/12148/btv1b10500687r/manifest.json", "location": 'BnF' } - ], - "buildPath" : "/build/mirador/", - "mainMenuSettings" : { - "show" : true, - "buttons" : { - "bookmark" : false, - "fullScreenViewer": true, - "options": false - }, - "userButtons" : [ - ], - "userLogo" : { - "label" : "Example 2", - "attributes" : { "id" : "logo", "href" : "http://iiif.io", "target" : "_blank" } - } - }, - "annotationEndpoint" : { - "name": "Local Storage", - "module": "LocalStorageEndpoint" - } - }; - -})(MiradorExample); diff --git a/examples/embedded-multiple-instances/embedded.css b/examples/embedded-multiple-instances/embedded.css deleted file mode 100644 index a50701ab8c5cdb1b5886c8e193036828151a9ef9..0000000000000000000000000000000000000000 --- a/examples/embedded-multiple-instances/embedded.css +++ /dev/null @@ -1,19 +0,0 @@ -.mirador_container { - position: relative; - display: inline-block; - border: 5px solid green; - margin: 10px; - width: 45%; - height: 500px; -} - -.mirador_viewer { - position: absolute; - width: 100%; - top: 0; - bottom: 0; -} - -h1 { - margin-left: 10px; -} diff --git a/examples/embedded-multiple-instances/embedded.js b/examples/embedded-multiple-instances/embedded.js deleted file mode 100644 index 078ce63950408b187bcd683f6454a1b458584407..0000000000000000000000000000000000000000 --- a/examples/embedded-multiple-instances/embedded.js +++ /dev/null @@ -1,10 +0,0 @@ -window.MiradorExample = {}; - -(function ($) { - - jQuery(document).ready(function () { - Mirador($.config_1); - Mirador($.config_2); - }); - -})(MiradorExample); diff --git a/examples/embedded-multiple-instances/index.html b/examples/embedded-multiple-instances/index.html deleted file mode 100644 index bda98756c74aff4ee4b7dac30be76ad572d7d4f3..0000000000000000000000000000000000000000 --- a/examples/embedded-multiple-instances/index.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"/> - <link rel="stylesheet" type="text/css" href="embedded.css"/> - <script type="text/javascript" src="../../build/mirador/mirador.js"></script> - <script type="text/javascript" src="embedded.js"></script> - <script type="text/javascript" src="config-1.js"></script> - <script type="text/javascript" src="config-2.js"></script> - <title>Embedded Mirador Viewers</title> -</head> -<body> - <h1>Mirador Embedded</h1> - - <div class="mirador_container"> - <div id="mirador_viewer_1" class="mirador_viewer"></div> - </div> - - <h1>HTML Ipsum Presents</h1> - - <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p> - - <h2>Header Level 2</h2> - - <ol> - <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> - <li>Aliquam tincidunt mauris eu risus.</li> - </ol> - - <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote> - - <h3>Header Level 3</h3> - - <ul> - <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li> - <li>Aliquam tincidunt mauris eu risus.</li> - </ul> - - <pre><code> - #header h1 a { - display: block; - width: 300px; - height: 80px; - } - </code></pre> - - <div class="mirador_container"> - <div id="mirador_viewer_2" class="mirador_viewer"></div> - </div> - -</body> -</html> diff --git a/examples/embedded.html b/examples/embedded.html deleted file mode 100644 index d9023e3b34a1d5f64e1e15087965a9d78438a7e8..0000000000000000000000000000000000000000 --- a/examples/embedded.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - body {text-align: center; padding: 0; margin: 0; overflow: hidden; font-size: 70%; } - #frame { margin: 0 auto}; - </style> -</head> -<body> - <h1>Embedded Zen Mode - 1 x 1</h1> - <h2>layout controls, side panel, and new object controls disabled.</h2> - <p><iframe src="configs/Zen1x1.html" width="800" height="600" marginwidth="0" marginheight="0" frameborder="10" scrolling="no" id="frame" allowfullscreen="">You need an iFrame capable browser to view this.</iframe></p> -</body> -</html> diff --git a/examples/example.html b/examples/example.html deleted file mode 100644 index e4014ec050283ddb7261a045cc9e7910f9b0ba82..0000000000000000000000000000000000000000 --- a/examples/example.html +++ /dev/null @@ -1,80 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - </head> - <body> - <div id="viewer"></div> - - <script src="mirador/mirador.min.js"></script> - <script type="text/javascript"> - - $(function() { - myMiradorInstance = Mirador({ - id: "viewer", - layout: "1x1", - buildPath: "mirador/", - data: [ - { manifestUri: "https://iiif.lib.harvard.edu/manifests/drs:48309543", location: "Harvard University"}, - { manifestUri: "https://iiif.lib.harvard.edu/manifests/drs:5981093", location: "Harvard University"}, - { manifestUri: "https://iiif.lib.harvard.edu/manifests/via:olvwork576793", location: "Harvard University"}, - { manifestUri: "https://iiif.lib.harvard.edu/manifests/drs:14033171", location: "Harvard University"}, - { manifestUri: "https://iiif.lib.harvard.edu/manifests/drs:46909368", location: "Harvard University"}, - { manifestUri: "https://iiif.lib.harvard.edu/manifests/drs:48331776", location: "Harvard University"}, - { manifestUri: "http://iiif.harvardartmuseums.org/manifests/object/299843", location: "Harvard University"}, - { manifestUri: "http://iiif.harvardartmuseums.org/manifests/object/304136", location: "Harvard University"}, - { manifestUri: "http://iiif.harvardartmuseums.org/manifests/object/198021", location: "Harvard University"}, - { manifestUri: "http://iiif.harvardartmuseums.org/manifests/object/320567", location: "Harvard University"}, - { manifestUri: "https://purl.stanford.edu/qm670kv1873/iiif/manifest.json", location: "Stanford University"}, - { manifestUri: "https://purl.stanford.edu/jr903ng8662/iiif/manifest.json", location: "Stanford University"}, - { manifestUri: "https://purl.stanford.edu/ch264fq0568/iiif/manifest.json", location: "Stanford University"}, - { manifestUri: "https://purl.stanford.edu/wh234bz9013/iiif/manifest.json", location: "Stanford University"}, - { manifestUri: "https://purl.stanford.edu/rd447dz7630/iiif/manifest.json", location: "Stanford University"}, - { manifestUri: "http://dms-data.stanford.edu/data/manifests/Stanford/ege1/manifest.json", location: "Stanford University"}, - { manifestUri: "http://dams.llgc.org.uk/iiif/4574752/manifest.json", location: "National Library of Wales"}, - { manifestUri: "http://dev.llgc.org.uk/iiif/ww1posters.json", location: "National Library of Wales"}, - { manifestUri: "http://dams.llgc.org.uk/iiif/newspaper/issue/3320640/manifest.json", location: "National Library of Wales"}, - { manifestUri: "http://dams.llgc.org.uk/iiif/2.0/1465298/manifest.json", location: "National Library of Wales"}, - { manifestUri: "http://manifests.ydc2.yale.edu/manifest/Admont23", location: "Yale University"}, - { manifestUri: "http://manifests.ydc2.yale.edu/manifest/Admont43", location: "Yale University"}, - { manifestUri: "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", location: "Yale University"}, - { manifestUri: "http://manifests.britishart.yale.edu/manifest/5005", location: "Yale Center For British Art"}, - { manifestUri: "http://manifests.britishart.yale.edu/manifest/1474", location: "Yale Center For British Art"}, - { manifestUri: "http://iiif.bodleian.ox.ac.uk/iiif/manifest/51a65464-6408-4a78-9fd1-93e1fa995b9c.json", location: "Bodleian Libraries"}, - { manifestUri: "http://iiif.bodleian.ox.ac.uk/iiif/manifest/f19aeaf9-5aba-4cee-be32-584663ff1ef1.json", location: "Bodleian Libraries"}, - { manifestUri: "http://iiif.bodleian.ox.ac.uk/iiif/manifest/3b31c0a9-3dab-4801-b3dc-f2a3e3786d34.json", location: "Bodleian Libraries"}, - { manifestUri: "http://iiif.bodleian.ox.ac.uk/iiif/manifest/e32a277e-91e2-4a6d-8ba6-cc4bad230410.json", location: "Bodleian Libraries"}, - { manifestUri: "http://gallica.bnf.fr/iiif/ark:/12148/btv1b84539771/manifest.json", location: 'BnF'}, - { manifestUri: "http://gallica.bnf.fr/iiif/ark:/12148/btv1b10500687r/manifest.json", location: 'BnF'}, - { manifestUri: "http://gallica.bnf.fr/iiif/ark:/12148/btv1b55002605w/manifest.json", location: 'BnF'}, - { manifestUri: "http://gallica.bnf.fr/iiif/ark:/12148/btv1b55002481n/manifest.json", location: 'BnF'}, - { manifestUri: "http://www.e-codices.unifr.ch/metadata/iiif/sl-0002/manifest.json", location: 'e-codices'}, - { manifestUri: "http://www.e-codices.unifr.ch/metadata/iiif/bge-cl0015/manifest.json", location: 'e-codices'}, - { manifestUri: "http://www.e-codices.unifr.ch/metadata/iiif/fmb-cb-0600a/manifest.json", location: 'e-codices'}, - { manifestUri: "https://data.ucd.ie/api/img/manifests/ucdlib:33064", location: "University College Dublin"}, - { manifestUri: "https://data.ucd.ie/api/img/manifests/ucdlib:40851", location: "University College Dublin"}, - { manifestUri: "https://data.ucd.ie/api/img/manifests/ucdlib:30708", location: "University College Dublin"}, - { manifestUri: "http://dzkimgs.l.u-tokyo.ac.jp/iiif/zuzoubu/12b02/manifest.json", location: "University of Tokyo"}, - { manifestUri: "http://www2.dhii.jp/nijl/NIJL0018/099-0014/manifest_tags.json", location: "NIJL"}, - { manifestUri: "http://digi.vatlib.it/iiif/MSS_Vat.lat.3225/manifest.json", location: "Vatican Library"}, - { manifestUri: "http://media.nga.gov/public/manifests/nga_highlights.json", location: "National Gallery of Art"} - ], - windowObjects: [], - annotationEndpoint: { - name:"Local Storage", - module: "LocalStorageEndpoint" } - }); - }); - </script> - </body> -</html> diff --git a/examples/fullScreen.html b/examples/fullScreen.html deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/examples/imageLayers.html b/examples/imageLayers.html deleted file mode 100644 index c502d5eaf72ebf5e544eff23baa588c543df87c9..0000000000000000000000000000000000000000 --- a/examples/imageLayers.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - </head> - <body> - <div id="viewer"></div> - - <script src="../build/mirador/mirador.js"></script> - <script type="text/javascript"> - - $(function() { - // Called without "let" or "var" - // so we can play with it in the browser - myMiradorInstance = Mirador({ - "id": "viewer", - "buildPath" : "/", - "layout": "1x1", - "data": [ - { "manifestUri": "http://demos.biblissima-condorcet.fr/iiif/metadata/BVMM/chateauroux/manifest.json", "location": "Biblissima"}, - { "manifestUri": "https://manifests.britishart.yale.edu/Osbornfa1", "location": "Yale Beinecke"} - ], - "windowObjects": [], - "sidePanelOptions" : { - "layersTabAvailable": true, - }, - "annotationEndpoint": { "name":"Local Storage", "module": "LocalStorageEndpoint" } - }); - }); - </script> - <!-- This enables live reloading of assets for improved developer experience. --> - <!-- Remove if copying this page as a basis for another project. --> - <script src="//localhost:35729/livereload.js"></script> - </body> -</html> diff --git a/examples/interactiveFrame.html b/examples/interactiveFrame.html deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/examples/layersAndSearchWithinPanels.html b/examples/layersAndSearchWithinPanels.html deleted file mode 100644 index 49886117a27100a448afccf2170b8949a7b73a43..0000000000000000000000000000000000000000 --- a/examples/layersAndSearchWithinPanels.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - </head> - <body> - <div id="viewer"></div> - - <script src="../build/mirador/mirador.js"></script> - <script type="text/javascript"> - - $(function() { - // Called without "let" or "var" - // so we can play with it in the browser - myMiradorInstance = Mirador({ - "id": "viewer", - "buildPath" : "/", - "layout": "1x1", - "data": [ - { "manifestUri": "http://demos.biblissima-condorcet.fr/iiif/metadata/BVMM/chateauroux/manifest.json", "location": "Biblissima"}, - { "manifestUri": "https://manifests.britishart.yale.edu/Osbornfa1", "location": "Yale Beinecke"}, - { "manifestUri": "https://wellcomelibrary.org/iiif/b18035978/manifest", "location": "Harvard University"} - ], - "windowObjects": [], - "annotationEndpoint": { "name":"Local Storage", "module": "LocalStorageEndpoint" }, - "sidePanelOptions" : { - "tocTabAvailable": true, - "layersTabAvailable": true, - "searchTabAvailable": true - }, - }); - }); - </script> - <!-- This enables live reloading of assets for improved developer experience. --> - <!-- Remove if copying this page as a basis for another project. --> - <script src="//localhost:35729/livereload.js"></script> - </body> -</html> diff --git a/examples/searchWithin.html b/examples/searchWithin.html deleted file mode 100644 index 409b7507a78443bff37cf0c86931c412459cd56c..0000000000000000000000000000000000000000 --- a/examples/searchWithin.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="../build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - </head> - <body> - <div id="viewer"></div> - - <script src="../build/mirador/mirador.js"></script> - <script type="text/javascript"> - - $(function() { - // Called without "let" or "var" - // so we can play with it in the browser - myMiradorInstance = Mirador({ - "id": "viewer", - "buildPath" : "/", - "layout": "1x1", - "data": [ - { "manifestUri": "https://wellcomelibrary.org/iiif/b18035978/manifest", "location": "Harvard University"} - ], - "windowObjects": [], - "sidePanelOptions" : { - "searchTabAvailable": true - }, - "annotationEndpoint": { "name":"Local Storage", "module": "LocalStorageEndpoint" } - }); - }); - </script> - <!-- This enables live reloading of assets for improved developer experience. --> - <!-- Remove if copying this page as a basis for another project. --> - <script src="//localhost:35729/livereload.js"></script> - </body> -</html> diff --git a/images/border_type_1.png b/images/border_type_1.png deleted file mode 100644 index f1818325b8cd7fe419fca8318d0e8c1e8ec80c55..0000000000000000000000000000000000000000 Binary files a/images/border_type_1.png and /dev/null differ diff --git a/images/border_type_2.png b/images/border_type_2.png deleted file mode 100644 index 60992c9425226d40d9e9724888ebe7cd063b11be..0000000000000000000000000000000000000000 Binary files a/images/border_type_2.png and /dev/null differ diff --git a/images/border_type_3.png b/images/border_type_3.png deleted file mode 100644 index 7e0f8e235b95c1ca5803bc5800bdd047034ae9b7..0000000000000000000000000000000000000000 Binary files a/images/border_type_3.png and /dev/null differ diff --git a/images/border_type_4.png b/images/border_type_4.png deleted file mode 100644 index 4a581bb46b0610f4555dd8d8cabc364f6eaf33fb..0000000000000000000000000000000000000000 Binary files a/images/border_type_4.png and /dev/null differ diff --git a/images/border_type_5.png b/images/border_type_5.png deleted file mode 100644 index 544e018cdc474a32e5d646e1a74a89bc77687fe2..0000000000000000000000000000000000000000 Binary files a/images/border_type_5.png and /dev/null differ diff --git a/images/debut_dark.png b/images/debut_dark.png deleted file mode 100644 index 17a4d6b42defcc8ebbad993bc91a2030f6c690ed..0000000000000000000000000000000000000000 Binary files a/images/debut_dark.png and /dev/null differ diff --git a/index.html b/index.html deleted file mode 100644 index 2b9cc81f0147227aedfbf2a71763009f62630384..0000000000000000000000000000000000000000 --- a/index.html +++ /dev/null @@ -1,95 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <link rel="stylesheet" type="text/css" href="build/mirador/css/mirador-combined.css"> - <title>Mirador Viewer</title> - <style type="text/css"> - #viewer { - width: 100%; - height: 100%; - position: fixed; - } - </style> - </head> - <body> - <div id="viewer"></div> - - <script src="build/mirador/mirador.js"></script> - <script type="text/javascript"> - - $(function() { - // Called without "let" or "var" - // so we can play with it in the browser - myMiradorInstance = Mirador({ - "id": "viewer", - "layout": "1x1", - "data": [ - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/drs:48309543", "location": "Harvard University"}, - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/drs:5981093", "location": "Harvard University"}, - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/via:olvwork576793", "location": "Harvard University"}, - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/drs:14033171", "location": "Harvard University"}, - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/drs:46909368", "location": "Harvard University"}, - { "manifestUri": "https://iiif.lib.harvard.edu/manifests/drs:48331776", "location": "Harvard University"}, - { "manifestUri": "http://iiif.harvardartmuseums.org/manifests/object/299843", "location": "Harvard University"}, - { "manifestUri": "http://iiif.harvardartmuseums.org/manifests/object/304136", "location": "Harvard University"}, - { "manifestUri": "http://iiif.harvardartmuseums.org/manifests/object/198021", "location": "Harvard University"}, - { "manifestUri": "http://iiif.harvardartmuseums.org/manifests/object/320567", "location": "Harvard University"}, - { "manifestUri": "https://purl.stanford.edu/qm670kv1873/iiif/manifest", "location": "Stanford University"}, - { "manifestUri": "https://purl.stanford.edu/jr903ng8662/iiif/manifest", "location": "Stanford University"}, - { "manifestUri": "https://purl.stanford.edu/ch264fq0568/iiif/manifest", "location": "Stanford University"}, - { "manifestUri": "https://purl.stanford.edu/wh234bz9013/iiif/manifest", "location": "Stanford University"}, - { "manifestUri": "https://purl.stanford.edu/rd447dz7630/iiif/manifest", "location": "Stanford University"}, - { "manifestUri": "http://dms-data.stanford.edu/data/manifests/Stanford/ege1/manifest.json", "location": "Stanford University"}, - { "manifestUri": "http://dams.llgc.org.uk/iiif/4574752/manifest.json", "location": "National Library of Wales"}, - { "manifestUri": "http://dev.llgc.org.uk/iiif/ww1posters.json", "location": "National Library of Wales"}, - { "manifestUri": "http://dams.llgc.org.uk/iiif/newspaper/issue/3320640/manifest.json", "location": "National Library of Wales"}, - { "manifestUri": "http://dams.llgc.org.uk/iiif/2.0/1465298/manifest.json", "location": "National Library of Wales"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont23", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/Admont43", "location": "Yale University"}, - { "manifestUri": "http://manifests.ydc2.yale.edu/manifest/BeineckeMS10", "location": "Yale University"}, - { "manifestUri": "https://manifests.britishart.yale.edu/manifest/5005", "location": "Yale Center For British Art"}, - { "manifestUri": "https://manifests.britishart.yale.edu/manifest/1474", "location": "Yale Center For British Art"}, - { "manifestUri": "http://iiif.bodleian.ox.ac.uk/iiif/manifest/51a65464-6408-4a78-9fd1-93e1fa995b9c.json", "location": "Bodleian Libraries"}, - { "manifestUri": "http://iiif.bodleian.ox.ac.uk/iiif/manifest/f19aeaf9-5aba-4cee-be32-584663ff1ef1.json", "location": "Bodleian Libraries"}, - { "manifestUri": "http://iiif.bodleian.ox.ac.uk/iiif/manifest/3b31c0a9-3dab-4801-b3dc-f2a3e3786d34.json", "location": "Bodleian Libraries"}, - { "manifestUri": "http://iiif.bodleian.ox.ac.uk/iiif/manifest/e32a277e-91e2-4a6d-8ba6-cc4bad230410.json", "location": "Bodleian Libraries"}, - { "manifestUri": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b84539771/manifest.json", "location": 'BnF'}, - { "manifestUri": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b10500687r/manifest.json", "location": 'BnF'}, - { "manifestUri": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b55002605w/manifest.json", "location": 'BnF'}, - { "manifestUri": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b55002481n/manifest.json", "location": 'BnF'}, - { "manifestUri": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0002/manifest.json", "location": 'e-codices'}, - { "manifestUri": "http://www.e-codices.unifr.ch/metadata/iiif/bge-cl0015/manifest.json", "location": 'e-codices'}, - { "manifestUri": "http://www.e-codices.unifr.ch/metadata/iiif/fmb-cb-0600a/manifest.json", "location": 'e-codices'}, - { "manifestUri": "https://data.ucd.ie/api/img/manifests/ucdlib:33064", "location": "University College Dublin"}, - { "manifestUri": "https://data.ucd.ie/api/img/manifests/ucdlib:40851", "location": "University College Dublin"}, - { "manifestUri": "https://data.ucd.ie/api/img/manifests/ucdlib:30708", "location": "University College Dublin"}, - { "manifestUri": "http://dzkimgs.l.u-tokyo.ac.jp/iiif/zuzoubu/12b02/manifest.json", "location": "University of Tokyo"}, - { "manifestUri": "http://www2.dhii.jp/nijl/NIJL0018/099-0014/manifest_tags.json", "location": "NIJL"}, - { "manifestUri": "https://digi.vatlib.it/iiif/MSS_Vat.lat.3225/manifest.json", "location": "Vatican Library"}, - { "manifestUri": "http://media.nga.gov/public/manifests/nga_highlights.json", "location": "National Gallery of Art"}, - { "manifestUri": "http://demos.biblissima-condorcet.fr/iiif/metadata/BVMM/chateauroux/manifest.json", "location": "Biblissima"}, - { "manifestUri": "https://manifests.britishart.yale.edu/Osbornfa1", "location": "Yale Beinecke"}, - /* { "manifestUri": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/manifest.json", "location": "Biblissima"}*/ - { "manifestUri": "https://media.nga.gov/public/manifests/multispectral_demo.json", "location": "National Gallery of Art"}, - { "manifestUri": "https://scta.info/iiif/codex/sorb/manifest"}, - { "manifestUri": "https://scta.info/iiif/graciliscommentary/lon/manifest"}, - { "manifestUri": "https://scta.info/iiif/plaoulcommentary/sorb/manifest"} - ], - "windowObjects": [], - "annotationEndpoint": { "name":"Local Storage", "module": "LocalStorageEndpoint" }, - "sidePanelOptions" : { - "tocTabAvailable": true, - "layersTabAvailable": true, - "searchTabAvailable": true, - "annotations" : true - }, - }); - }); - </script> - <!-- This enables live reloading of assets for improved developer experience. --> - <!-- Remove if copying this page as a basis for another project. --> - <script src="//localhost:35729/livereload.js"></script> - </body> -</html> diff --git a/jest-puppeteer.config.js b/jest-puppeteer.config.js new file mode 100644 index 0000000000000000000000000000000000000000..e8fa2f0c870485fc52504f2d9988144620d6cb1c --- /dev/null +++ b/jest-puppeteer.config.js @@ -0,0 +1,9 @@ +module.exports = { + launch: { + headless: process.env.CI === 'true', + }, + server: { + command: 'npm run server -- -p 4488', + port: 4488, + }, +}; diff --git a/jest.json b/jest.json new file mode 100644 index 0000000000000000000000000000000000000000..433054597fb59f8bb7db77770ec184b049572868 --- /dev/null +++ b/jest.json @@ -0,0 +1,15 @@ +{ + "collectCoverageFrom": [ + "src/**/*.{js,jsx}" + ], + "coverageDirectory": "<rootDir>/coverage", + "coverageReporters": ["html"], + "setupFiles": [ + "<rootDir>/setupJest.js" + ], + "testMatch": [ + "<rootDir>/**/__tests__/**/*.{js,jsx}", + "<rootDir>/src/**/?(*.)(spec|test|unit).{js,jsx}" + ], + "preset": "jest-puppeteer" +} diff --git a/js/lib/isfahan.js b/js/lib/isfahan.js deleted file mode 100644 index 0ea81c7a2012b741584fd553f18c3df53d7ca95e..0000000000000000000000000000000000000000 --- a/js/lib/isfahan.js +++ /dev/null @@ -1,209 +0,0 @@ -var Isfahan = function(configObject) { - var _this = this, - - containerSize = function(containerId) { - return [document.getElementById(containerId).offsetWidth, - document.getElementById(containerId).offsetHeight] - }, - containerId = configObject.containerId, - pad = d3_layout_cellPadNull, - round = Math.round, - padding = configObject.padding, - hierarchy = d3.layout.hierarchy(), - layoutDescription = configObject.layoutDescription; - - function calculateLayout(node) { - var children = node.children; - - if (children && children.length) { - var rect = pad(node), - type = node.type, - group = [], - remaining = children.slice(), // copy-on-write - child, - n; - - while ((n = remaining.length) > 0) { - group.push(child = remaining[n - 1]); - remaining.pop(); - } - - position(group, node.type, rect); - children.forEach(function(child, index) { - child.address = node.address.concat("." + child.type + (index + 1)); - }) - children.forEach(calculateLayout); - } - } - - // Positions the specified row of nodes. Modifies `rect`. - function position(group, groupType, rect) { - // console.log('%c\n'+' parent ' + groupType + ' rect is: ', 'background: #222; color: #EFEFEF; font-family: helvetica neue; font-size:20px; padding: 0 7px 3px 0;'); - // console.log(rect); - var i = -1, - row = (groupType === "row") ? false : true, // for ternary statements later, specifies whether that particular child is a row or not. Allows easy, centralised description of the parameter calculations that can be switched from row to column. - n = group.length, - x = rect.x, - y = rect.y, - d, - o; - var offset = 0; - while (++i < n) { - o = group[n-(i+1)], - d = divisor(o, row, rect, group, n), - o.id = typeof o.id !== 'undefined' ? o.id : genUuid(), - o.x = row ? x : x + offset, - o.y = row ? y + offset : y, - o.dx = row ? rect.dx : rect.dx/d, - o.dy = row ? rect.dy/d : rect.dy, - offset += row ? o.dy : o.dx; - // console.log({x:o.x, y: o.y, width:o.dx, height: o.dy}); - } - } - - function divisor(node, row, rect, group, n) { - - var old = false, - dimension = row ? 'dy' : 'dx', - total = rect[dimension], - divisor; - // if not already set, divide equally. - group.forEach(function(item) { - if (!item[dimension] === undefined) { - old = true; - } - }); - - if (old) { - console.log('preserved'); - var sum = group.reduce( - function(previousValue, currentValue, index, array) { - return previousValue[dimension] + currentValue[dimension]; - }); - console.log('sum: ' + sum); - - divisor = (node[dimension]/sum)*total; - console.log("divisor: "+divisor); - return divisor; - } else { - return n; - } - } - - function isfahan(configObject) { - var nodes = hierarchy(configObject.layoutDescription), - root = nodes[0]; - size = (function(containerSelector) { - var width = jQuery(containerSelector).width(); - var height = jQuery(containerSelector).height(); - - return [width, height]; - })(configObject.containerSelector); - root.x = 0; - root.y = 0; - root.dx = containerSize(containerId)[0]; - root.dy = containerSize(containerId)[1]; - root.address = root.type + "1"; - root.id = root.id || genUuid(); - - calculateLayout(root); - isfahan.padding(padding); - nodes = nodes.map(function(node) { - return merge(node, pad(node)); - }); - - return nodes; - } - - isfahan.size = function(x) { - if (!arguments.length) return containerSize; - containerSize = x; - return isfahan; - }; - - isfahan.round = function(x) { - if (!arguments.length) return round != Number; - round = x ? Math.round : Number; - return isfahan; - }; - - isfahan.padding = function(x) { - if (!arguments.length) return padding; - - function padFunction(node) { - var p = x.call(isfahan, node, node.depth); - console.log(p); - return p == null - ? d3_layout_cellPadNull(node) - : d3_layout_cellPad(node, typeof p === "number" ? [p, p, p, p] : p); - } - - function padConstant(node) { - return d3_layout_cellPad(node, x); - } - - var type; - pad = (padding = x) == null ? d3_layout_cellPadNull - : (type = typeof x) === "function" ? padFunction - : type === "number" ? (x = [x, x, x, x], padConstant) - : padConstant; - return isfahan; - }; - - function genUuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); - return v.toString(16); - }); - } - - function d3_layout_cellPadNull(node) { - return {x: node.x, y: node.y, dx: node.dx, dy: node.dy}; - } - - function d3_layout_cellPad(node, padding) { - var x = node.x + padding[3], - y = node.y + padding[0], - dx = node.dx - padding[1] - padding[3], - dy = node.dy - padding[0] - padding[2]; - if (dx < 0) { x += dx / 2; dx = 0; } - if (dy < 0) { y += dy / 2; dy = 0; } - return {x: x, y: y, dx: dx, dy: dy}; - } - - function merge(target, source) { - - /* Merges two (or more) objects, - giving the last one precedence */ - - if ( typeof target !== 'object' ) { - target = {}; - } - - for (var property in source) { - - if ( source.hasOwnProperty(property) ) { - - var sourceProperty = source[ property ]; - - if ( typeof sourceProperty === 'object' ) { - target[ property ] = util.merge( target[ property ], sourceProperty ); - continue; - } - - target[ property ] = sourceProperty; - - } - - } - - for (var a = 2, l = arguments.length; a < l; a++) { - merge(target, arguments[a]); - } - - return target; - }; - - // return d3.rebind(isfahan, hierarchy,"sort", "children", "value"); - return isfahan(configObject); -}; diff --git a/js/lib/modernizr.custom.js b/js/lib/modernizr.custom.js deleted file mode 100644 index e823210c35480500dbae8babe1e362891fa87f7c..0000000000000000000000000000000000000000 --- a/js/lib/modernizr.custom.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! modernizr 3.3.1 (Custom Build) | MIT * - * https://modernizr.com/download/?-cssfilters-printshiv-setclasses !*/ -!function(e,t,n){function r(e,t){return typeof e===t}function o(){var e,t,n,o,i,a,s;for(var l in E)if(E.hasOwnProperty(l)){if(e=[],t=E[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(o=r(t.fn,"function")?t.fn():t.fn,i=0;i<e.length;i++)a=e[i],s=a.split("."),1===s.length?Modernizr[s[0]]=o:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=o),y.push((o?"":"no-")+s.join("-"))}}function i(e){var t=C.className,n=Modernizr._config.classPrefix||"";if(b&&(t=t.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),b?C.className.baseVal=t:C.className=t)}function a(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):b?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function s(e,t){return!!~(""+e).indexOf(t)}function l(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function u(e,t){return function(){return e.apply(t,arguments)}}function c(e,t,n){var o;for(var i in e)if(e[i]in t)return n===!1?e[i]:(o=t[e[i]],r(o,"function")?u(o,n||t):o);return!1}function f(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function d(){var e=t.body;return e||(e=a(b?"svg":"body"),e.fake=!0),e}function p(e,n,r,o){var i,s,l,u,c="modernizr",f=a("div"),p=d();if(parseInt(r,10))for(;r--;)l=a("div"),l.id=o?o[r]:c+(r+1),f.appendChild(l);return i=a("style"),i.type="text/css",i.id="s"+c,(p.fake?p:f).appendChild(i),p.appendChild(f),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),f.id=c,p.fake&&(p.style.background="",p.style.overflow="hidden",u=C.style.overflow,C.style.overflow="hidden",C.appendChild(p)),s=n(f,e),p.fake?(p.parentNode.removeChild(p),C.style.overflow=u,C.offsetHeight):f.parentNode.removeChild(f),!!s}function m(t,r){var o=t.length;if("CSS"in e&&"supports"in e.CSS){for(;o--;)if(e.CSS.supports(f(t[o]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var i=[];o--;)i.push("("+f(t[o])+":"+r+")");return i=i.join(" or "),p("@supports ("+i+") { #modernizr { position: absolute; } }",function(e){return"absolute"==getComputedStyle(e,null).position})}return n}function h(e,t,o,i){function u(){f&&(delete z.style,delete z.modElem)}if(i=r(i,"undefined")?!1:i,!r(o,"undefined")){var c=m(e,o);if(!r(c,"undefined"))return c}for(var f,d,p,h,v,g=["modernizr","tspan","samp"];!z.style&&g.length;)f=!0,z.modElem=a(g.shift()),z.style=z.modElem.style;for(p=e.length,d=0;p>d;d++)if(h=e[d],v=z.style[h],s(h,"-")&&(h=l(h)),z.style[h]!==n){if(i||r(o,"undefined"))return u(),"pfx"==t?h:!0;try{z.style[h]=o}catch(y){}if(z.style[h]!=v)return u(),"pfx"==t?h:!0}return u(),!1}function v(e,t,n,o,i){var a=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+T.join(a+" ")+a).split(" ");return r(t,"string")||r(t,"undefined")?h(s,t,o,i):(s=(e+" "+j.join(a+" ")+a).split(" "),c(s,t,n))}function g(e,t,r){return v(e,n,n,t,r)}var y=[],E=[],S={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){E.push({name:e,fn:t,options:n})},addAsyncTest:function(e){E.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=S,Modernizr=new Modernizr;var C=t.documentElement,b="svg"===C.nodeName.toLowerCase(),x=S._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];S._prefixes=x;var w="CSS"in e&&"supports"in e.CSS,_="supportsCSS"in e;Modernizr.addTest("supports",w||_);b||!function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=w.elements;return"string"==typeof e?e.split(" "):e}function o(e,t){var n=w.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),w.elements=n+" "+e,u(t)}function i(e){var t=x[e[C]];return t||(t={},b++,e[C]=b,x[b]=t),t}function a(e,n,r){if(n||(n=t),v)return n.createElement(e);r||(r=i(n));var o;return o=r.cache[e]?r.cache[e].cloneNode():S.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!o.canHaveChildren||E.test(e)||o.tagUrn?o:r.frag.appendChild(o)}function s(e,n){if(e||(e=t),v)return e.createDocumentFragment();n=n||i(e);for(var o=n.frag.cloneNode(),a=0,s=r(),l=s.length;l>a;a++)o.createElement(s[a]);return o}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return w.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(w,t.frag)}function u(e){e||(e=t);var r=i(e);return!w.shivCSS||h||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),v||l(e,r),e}function c(e){for(var t,n=e.getElementsByTagName("*"),o=n.length,i=RegExp("^(?:"+r().join("|")+")$","i"),a=[];o--;)t=n[o],i.test(t.nodeName)&&a.push(t.applyElement(f(t)));return a}function f(e){for(var t,n=e.attributes,r=n.length,o=e.ownerDocument.createElement(N+":"+e.nodeName);r--;)t=n[r],t.specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function d(e){for(var t,n=e.split("{"),o=n.length,i=RegExp("(^|[\\s,>+~])("+r().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),a="$1"+N+"\\:$2";o--;)t=n[o]=n[o].split("}"),t[t.length-1]=t[t.length-1].replace(i,a),n[o]=t.join("}");return n.join("{")}function p(e){for(var t=e.length;t--;)e[t].removeNode()}function m(e){function t(){clearTimeout(a._removeSheetTimer),r&&r.removeNode(!0),r=null}var r,o,a=i(e),s=e.namespaces,l=e.parentWindow;return!T||e.printShived?e:("undefined"==typeof s[N]&&s.add(N),l.attachEvent("onbeforeprint",function(){t();for(var i,a,s,l=e.styleSheets,u=[],f=l.length,p=Array(f);f--;)p[f]=l[f];for(;s=p.pop();)if(!s.disabled&&_.test(s.media)){try{i=s.imports,a=i.length}catch(m){a=0}for(f=0;a>f;f++)p.push(i[f]);try{u.push(s.cssText)}catch(m){}}u=d(u.reverse().join("")),o=c(e),r=n(e,u)}),l.attachEvent("onafterprint",function(){p(o),clearTimeout(a._removeSheetTimer),a._removeSheetTimer=setTimeout(t,500)}),e.printShived=!0,e)}var h,v,g="3.7.3",y=e.html5||{},E=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,S=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,C="_html5shiv",b=0,x={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",h="hidden"in e,v=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){h=!0,v=!0}}();var w={elements:y.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:g,shivCSS:y.shivCSS!==!1,supportsUnknownElements:v,shivMethods:y.shivMethods!==!1,type:"default",shivDocument:u,createElement:a,createDocumentFragment:s,addElements:o};e.html5=w,u(t);var _=/^$|\b(?:all|print)\b/,N="html5shiv",T=!v&&function(){var n=t.documentElement;return!("undefined"==typeof t.namespaces||"undefined"==typeof t.parentWindow||"undefined"==typeof n.applyElement||"undefined"==typeof n.removeNode||"undefined"==typeof e.attachEvent)}();w.type+=" print",w.shivPrint=m,m(t),"object"==typeof module&&module.exports&&(module.exports=w)}("undefined"!=typeof e?e:this,t);var N="Moz O ms Webkit",T=S._config.usePrefixes?N.split(" "):[];S._cssomPrefixes=T;var j=S._config.usePrefixes?N.toLowerCase().split(" "):[];S._domPrefixes=j;var k={elem:a("modernizr")};Modernizr._q.push(function(){delete k.elem});var z={style:k.elem.style};Modernizr._q.unshift(function(){delete z.style}),S.testAllProps=v,S.testAllProps=g,Modernizr.addTest("cssfilters",function(){if(Modernizr.supports)return g("filter","blur(2px)");var e=a("a");return e.style.cssText=x.join("filter:blur(2px); "),!!e.style.length&&(t.documentMode===n||t.documentMode>9)}),o(),i(y),delete S.addTest,delete S.addAsyncTest;for(var P=0;P<Modernizr._q.length;P++)Modernizr._q[P]();e.Modernizr=Modernizr}(window,document); \ No newline at end of file diff --git a/js/src/annotations/annotation-utils.js b/js/src/annotations/annotation-utils.js deleted file mode 100644 index f2ad47a077e40dcada1b461787f86581e0f923fe..0000000000000000000000000000000000000000 --- a/js/src/annotations/annotation-utils.js +++ /dev/null @@ -1,195 +0,0 @@ -(function($) { - - $.AnnotationUtils = function(){ - - }; - - function PaperItem(item){ - this.item = item; - } - - PaperItem.prototype = { - getItem:function(){ - return this.item; - }, - translateByXY: function(x,y){ - this.item.position.x +=x; - this.item.position.y +=y; - }, - - translateByPoint:function(point){ - this.item.position = this.item.position.add(point); - }, - - setOnMouseDownListener:function(callback){ - this.mouseDown = callback; - }, - - onMouseDown:function(){ - this.mouseDown.call(this,this.item); - }, - - remove:function(){ - this.item.remove(); - }, - - rotate:function(angle,pivot){ - pivot?this.item.rotate(angle,pivot):this.item.rotate(angle); - }, - - setPosition:function(point){ - this.item.position = point; - }, - - getWidth:function(){ - return this.item.width; - }, - - getHeight:function(){ - return this.item.height; - }, - - addData:function(key,data){ - this.item.data[key] = data; - }, - - getData: function(key){ - return this.item.data[key]; - }, - - resize:function(size){ - this.item.size = size; - } - }; - - function Group(paperScope,opts){ - var item = new paperScope.Group(opts); - PaperItem.call(this,item); - } - - Group.prototype = Object.create(PaperItem.prototype,{}); - Group.constructor = Group; - - var Icon = function(paperScope,opts){ - this.paperScope = paperScope; - var item = new paperScope.Raster(opts); - PaperItem.call(this,item); - if(opts && opts.onLoad){ - this.item.onLoad = opts.onLoad; - } - }; - - Icon.prototype = Object.create(PaperItem.prototype, {}); - - Icon.constructor = Icon; - - - function PointText(paperScope,opts) { - var text = new paperScope.PointText(opts); - PaperItem.call(this,text); - } - - PointText.prototype = Object.create(PaperItem.prototype); - - PointText.prototype.resize = function(newSize){ - this.item.fontSize = newSize; - }; - - PointText.constructor = PointText; - - function PointTextIcon(paperScope,opts){ - this.paperScope = paperScope; - opts.justification = 'center'; - opts.font = 'FontAwesome'; - this.content = opts.content; - PointText.call(this,paperScope,opts); - - this.rasterMask.addData('self',this); - } - - PointTextIcon.prototype = Object.create(PointText.prototype, {}); - - PointTextIcon.prototype.setPosition = function(point){ - this.rasterMask.setPosition(point); - PointText.prototype.setPosition.call(this,point); - }; - - PointTextIcon.prototype.rotate = function(angle,pivot){ - this.rasterMask.rotate(angle,pivot); - PointText.prototype.rotate.call(this,angle,pivot); - }; - PointTextIcon.prototype.translateByPoint = function (point) { - this.rasterMask.translateByPoint(point); - PointText.prototype.translateByPoint.call(this,point); - }; - PointTextIcon.prototype.translateByXY = function (x,y){ - this.rasterMask.translateByXY(x,y); - PointText.prototype.translateByXY.call(this,x,y); - }; - PointTextIcon.prototype.remove = function () { - this.rasterMask.remove(); - PointText.prototype.remove.call(this); - }; - PointTextIcon.prototype.resize = function (size) { - this.rasterMask.resize(new this.paperScope.Size(size,size)); - PointText.prototype.resize.call(this,size); - }; - - PointTextIcon.prototype.getMask = function () { - return this.rasterMask; - }; - - PointTextIcon.prototype.constructor = PointTextIcon; - - function DeleteActionIcon(paperScope,opts){ - this.paperScope = paperScope; - opts.fillColor = opts.fillColor || 'black'; - opts.fontSize = opts.size || (24 * 1 / paperScope.view.zoom); - opts.content = '\uf014'; - this.rasterMask = new Icon(paperScope,{ - name: opts.name.replace('delete','Delete_mask'), - size: new paperScope.Size(opts.fontSize ,opts.fontSize) - }); - PointTextIcon.call(this,paperScope,opts); - } - - DeleteActionIcon.prototype = Object.create(PointTextIcon.prototype, {}); - - DeleteActionIcon.prototype.setOnMouseDownListener = function (overlay) { - this.mouseDown = function () { - overlay.eventEmitter.publish('deleteShape.' + overlay.windowId, [this.getData('parent')]); - overlay.mode = 'delete'; - }; - }; - - function RotationIcon(paperScope,opts){ - this.paperScope = paperScope; - opts.justification = 'center'; - opts.fillColor = opts.fillColor || 'black'; - opts.fontSize = opts.size || (16 * 1 / paperScope.view.zoom); - opts.content = '\uf01e'; - this.rasterMask = new Icon(paperScope,{ - name: opts.name.replace('rotation','Rotation_mask'), - size: new paperScope.Size(opts.fontSize ,opts.fontSize) - }); - PointTextIcon.call(this,paperScope,opts); - } - - RotationIcon.prototype = Object.create(PointTextIcon.prototype, {}); - - RotationIcon.prototype.setOnMouseDownListener = function (overlay) { - this.mouseDown = function () { - overlay.mode = 'rotate'; - }; - }; - - - $.AnnotationUtils.prototype = { - Icon:Icon, - PointText:PointText, - DeleteActionIcon:DeleteActionIcon, - RotationIcon:RotationIcon, - Group:Group - }; - -}(Mirador)); \ No newline at end of file diff --git a/js/src/annotations/annotationTooltip.js b/js/src/annotations/annotationTooltip.js deleted file mode 100644 index 9a1815f8943e8b6deb9ef684a90edf1799cd6d4e..0000000000000000000000000000000000000000 --- a/js/src/annotations/annotationTooltip.js +++ /dev/null @@ -1,472 +0,0 @@ -(function($) { - - $.AnnotationTooltip = function(options) { - jQuery.extend(this, { - targetElement: null, - annotations: [], - windowId: "", - eventEmitter: null - }, options); - - this.init(); - }; - - $.AnnotationTooltip.prototype = { - - init: function() { - this.editor = $[this.state.currentConfig.annotationBodyEditor.module]; - this.editorOptions = this.state.currentConfig.annotationBodyEditor.options; - - this.activeEditor = null; - this.activeEditorTip = null; - this.inEditOrCreateMode = false; - }, - - /** - * @param params: { - * annotation: any -- annotation JSON - * onAnnotationCreated: (annotation) => void - * onCompleted: () => void - * onCancel: () => void - * } - */ - showEditor: function(params) { - var _this = this; - if (_this.activeEditor) { return; } - - var editorContainer = _this.editorTemplate({ - id : jQuery.isEmptyObject(params.annotation) ? "" : params.annotation['@id'], - windowId : _this.windowId - }); - var selector = '#annotation-editor-' + _this.windowId; - - _this.activeEditor = new _this.editor( - jQuery.extend({}, _this.editorOptions, { - annotation: params.annotation, - windowId: _this.windowId - })); - _this.activeEditorTip = _this.targetElement.qtip({ - content: { - text: editorContainer - }, - position: { - my: 'center', - at: 'center', - container: _this.targetElement, - viewport: _this.targetElement - }, - style: { - classes: 'qtip-bootstrap qtip' + _this.windowId - }, - show: { - event: false - }, - hide: { - fixed: true, - delay: 300, - event: false - }, - events: { - render: function(event, api) { - _this.eventEmitter.publish('disableTooltips.' + _this.windowId); - - api.elements.tooltip.draggable(); - - jQuery(selector).on("submit", function(event) { - event.preventDefault(); - jQuery(selector + ' a.save').click(); - }); - - jQuery(selector + ' a.cancel').on("click", function(event) { - event.preventDefault(); - - var cancelCallback = function(){ - api.destroy(); - }; - - _this.eventEmitter.publish('onAnnotationCreatedCanceled.'+_this.windowId,[cancelCallback,!_this.activeEditor.isDirty()]); - - }); - - jQuery(selector + ' a.save').on("click", function(event) { - event.preventDefault(); - if(!params.onSaveClickCheck()){ - return; - } - var annotation = _this.activeEditor.createAnnotation(); - if (params.onAnnotationCreated) { params.onAnnotationCreated(annotation); } - - api.destroy(); - _this.activeEditor = null; - _this.activeEditorTip = null; - }); - - _this.activeEditor.show(selector); - _this.eventEmitter.publish('annotationEditorAvailable.' + _this.windowId); - } - - } - }); - _this.activeEditorTip.qtip('show'); - }, - - /** - * @param params: { - * container: HTMLElement - * viewport: HTMLElement - * getAnnoFromRegion: (regionId: string) => any[] - * onTooltipShown: (event: QTipShowEvent, api: QTipAPI) => void - * onTooltipHidden: (event: QTipShowEvent, api: QTipAPI) => void - * onEnterEditMode: (api: QTipAPI, oaAnno: any) => void - * onExitEditMode: (api: QTipAPI, oaAnno: any) => void - * onAnnotationSaved: (annotation) => void - * } - */ - initializeViewerUpgradableToEditor: function(params) { - var _this = this; - _this.activeEditorTip = jQuery(_this.targetElement).qtip({ - overwrite: true, - content: { - text: '' - }, - position: { - target: 'mouse', - my: 'bottom left', - at: 'top right', - adjust: { - mouse: false, - method: 'shift' - }, - container: params.container, - viewport: params.viewport - }, - style: { - classes: 'qtip-bootstrap qtip-viewer', - tip: false - }, - show: { - event: false - }, - hide: { - fixed: true, - delay: 300, - event: false - }, - events: { - show: function(event, api) { - if (params.onTooltipShown) { params.onTooltipShown(event, api); } - api.cache.hidden = false; - }, - hidden: function(event, api) { - if (params.onTooltipHidden) { params.onTooltipHidden(event, api); } - _this.removeAllEvents(api, params); - api.cache.hidden = true; - }, - visible: function (event, api) { - - }, - move: function (event, api) { - - } - } - }); - var api = jQuery(_this.targetElement).qtip('api'); - api.cache.annotations = []; - api.cache.hidden = true; - api.cache.params = params; - }, - - removeAllEvents: function(api, viewerParams) { - var _this = this; - var editorSelector = '#annotation-editor-' + _this.windowId; - var viewerSelector = '#annotation-viewer-' + _this.windowId; - jQuery(viewerSelector + ' a.delete').off("click"); - jQuery(viewerSelector + ' a.edit').off("click"); - jQuery(editorSelector + ' a.save').off("click"); - jQuery(editorSelector + ' a.cancel').off("click"); - }, - - addViewerEvents: function(api, viewerParams) { - var _this = this; - var selector = '#annotation-viewer-' + _this.windowId; - - jQuery(selector + ' a.delete').on("click", function(event) { - event.preventDefault(); - var elem = this; - new $.DialogBuilder(viewerParams.container).dialog({ - message: i18next.t('deleteAnnotation'), - closeButton: false, - buttons: { - 'no': { - label: i18next.t('no'), - className: 'btn-default', - callback: function() { - return; - } - }, - 'yes': { - label: i18next.t('yes'), - className: 'btn-primary', - callback: function() { - var display = jQuery(elem).parents('.annotation-display'); - var id = display.attr('data-anno-id'); - var callback = function(){ - _this.removeAllEvents(); - api.hide(); - display.remove(); - }; - - _this.eventEmitter.publish('onAnnotationDeleted.' + _this.windowId, [id,callback]); - } - } - } - }); - }); - - jQuery(selector + ' a.edit').on("click", function(event) { - event.preventDefault(); - var display = jQuery(this).parents('.annotation-display'); - var id = display.attr('data-anno-id'); - var oaAnno = viewerParams.getAnnoFromRegion(id)[0]; - // Don't show built in editor if external is available - if (!_this.state.getStateProperty('availableExternalCommentsPanel')) { - _this.freezeQtip(api, oaAnno, viewerParams); - _this.removeAllEvents(api, viewerParams); - _this.addEditorEvents(api, viewerParams); - } else { - _this.eventEmitter.publish('annotationInEditMode.' + _this.windowId,[oaAnno]); - _this.removeAllEvents(viewerParams); - api.destroy(); - jQuery(api.tooltip).remove(); - } - - _this.eventEmitter.publish('SET_ANNOTATION_EDITING.' + _this.windowId, { - "annotationId" : id, - "isEditable" : true, - "tooltip" : _this - }); - _this.eventEmitter.publish('modeChange.' + _this.windowId, 'editingAnnotation'); - }); - }, - - addEditorEvents: function(api, viewerParams) { - var _this = this; - var selector = '#annotation-editor-' + _this.windowId; - - jQuery(selector).on("submit", function(event) { - event.preventDefault(); - jQuery(selector + ' a.save').click(); - }); - - jQuery(selector + ' a.save').on("click", function(event) { - event.preventDefault(); - var display = jQuery(this).parents('.annotation-editor'); - var id = display.attr('data-anno-id'); - var oaAnno = viewerParams.getAnnoFromRegion(id)[0]; - - _this.activeEditor.updateAnnotation(oaAnno); - _this.eventEmitter.publish('annotationEditSave.'+_this.windowId,[oaAnno]); - }); - - jQuery(selector + ' a.cancel').on("click", function(event) { - event.preventDefault(); - var display = jQuery(this).parents('.annotation-editor'); - var id = display.attr('data-anno-id'); - var oaAnno = viewerParams.getAnnoFromRegion(id)[0]; - _this.removeAllEvents(); - _this.unFreezeQtip(api, oaAnno, viewerParams); - _this.eventEmitter.publish('annotationEditCancel.' + _this.windowId,[id]); - - }); - }, - - /** - * Shows annotation tooltip initialized with - * <code>initializeViewerUpgradableToEditor()</code> - * - * @param params: { - * annotations: any[] - * triggerEvent: MouseEvent - * shouldDisplayTooltip: (api: QTipAPI) => boolean - * } - */ - showViewer: function(params) { - var _this = this; - var api = jQuery(_this.targetElement).qtip('api'); - if (!api) { return; } - if (params.shouldDisplayTooltip && !params.shouldDisplayTooltip(api)) { - return; - } - if (params.annotations.length === 0) { - if (!api.cache.hidden) { - api.disable(false); - api.hide(params.triggerEvent); - api.cache.annotations = []; - api.cache.hidden = true; - api.disable(true); - } - } else { - var oldAnnotations = api.cache.annotations; - var isTheSame = oldAnnotations.length == params.annotations.length; - if (isTheSame) { - for (var i = 0; i < params.annotations.length; i++) { - if (oldAnnotations[i] != params.annotations[i]) { - isTheSame = false; - break; - } - } - } - if (api.cache.hidden || !isTheSame) { - api.disable(false); - _this.setTooltipContent(params.annotations); - api.cache.origin = params.triggerEvent; - api.reposition(params.triggerEvent, true); - api.show(params.triggerEvent); - api.cache.annotations = params.annotations; - api.cache.hidden = false; - _this.removeAllEvents(); - _this.addViewerEvents(api,api.cache.params); - } - } - }, - - setTooltipContent: function(annotations) { - var _this = this; - var api = jQuery(this.targetElement).qtip('api'); - if (api) { - api.set({'content.text': this.getViewerContent(annotations)}); - _this.eventEmitter.publish('tooltipViewerSet.' + this.windowId); - } - }, - - getViewerContent: function(annotations) { - var annoText, - tags = [], - htmlAnnotations = [], - id; - - jQuery.each(annotations, function(index, annotation) { - tags = []; - if (jQuery.isArray(annotation.resource)) { - jQuery.each(annotation.resource, function(index, value) { - if (value['@type'] === "oa:Tag") { - tags.push(value.chars); - } else { - annoText = value.chars; - } - }); - } else { - annoText = annotation.resource.chars; - } - var username = ""; - if (annotation.annotatedBy && annotation.annotatedBy.name) { - username = annotation.annotatedBy.name; - } - //if it is a manifest annotation, don't allow editing or deletion - //otherwise, check annotation in endpoint - var showUpdate = false; - if (annotation.endpoint !== 'manifest') { - showUpdate = annotation.endpoint.userAuthorize('update', annotation); - } - var showDelete = false; - if (annotation.endpoint !== 'manifest') { - showDelete = annotation.endpoint.userAuthorize('delete', annotation); - } - htmlAnnotations.push({ - annoText : $.sanitizeHtml(annoText), - tags : tags, - id : annotation['@id'], - username : username, - showUpdate : showUpdate, - showDelete : showDelete - }); - }); - - var template = this.viewerTemplate({ - annotations : htmlAnnotations, - windowId : this.windowId - }); - return template; - //return combination of all of them - }, - - freezeQtip: function(api, oaAnno, viewerParams) { - var _this = this; - if (this.inEditOrCreateMode) { throw 'AnnotationTooltip already in edit mode'; } - this.inEditOrCreateMode = true; - _this.eventEmitter.publish('disableRectTool.' + this.windowId); - var editorContainer = this.editorTemplate({ - id: jQuery.isEmptyObject(oaAnno) ? "" : oaAnno['@id'], - windowId: this.windowId - }); - api.set({ - 'content.text': editorContainer, - 'hide.event': false - }); - //add rich text editor - this.activeEditor = new this.editor( - jQuery.extend({}, this.editorOptions, { - annotation: oaAnno, - windowId: this.windowId - })); - this.activeEditor.show('form#annotation-editor-'+this.windowId); - _this.eventEmitter.publish('annotationEditorAvailable.' + this.windowId); - jQuery(api.elements.tooltip).removeClass("qtip-viewer"); - api.elements.tooltip.draggable(); - if (viewerParams.onEnterEditMode) { - viewerParams.onEnterEditMode(api, oaAnno); - } - }, - - unFreezeQtip: function(api, oaAnno, viewerParams) { - var _this = this; - if (!this.inEditOrCreateMode) { throw 'AnnotationTooltip not in edit mode'; } - this.inEditOrCreateMode = false; - _this.eventEmitter.publish('enableRectTool.' + this.windowId); - api.set({ - 'content.text': this.getViewerContent([oaAnno]), - 'hide.event': 'mouseleave' - }).hide(); - jQuery(api.elements.tooltip).addClass("qtip-viewer"); - if (viewerParams.onExitEditMode) { - viewerParams.onExitEditMode(api, oaAnno); - } - }, - - //when this is being used to edit an existing annotation, insert them into the inputs - editorTemplate: $.Handlebars.compile([ - '<form id="annotation-editor-{{windowId}}" class="annotation-editor annotation-tooltip" {{#if id}}data-anno-id="{{id}}"{{/if}}>', - '<div>', - // need to add a delete, if permissions allow - '<div class="button-container">', - '<a href="#cancel" class="cancel"><i class="fa fa-times-circle-o fa-fw"></i>{{t "cancel"}}</a>', - '<a href="#save" class="save"><i class="fa fa-database fa-fw"></i>{{t "save"}}</a>', - '</div>', - '</div>', - '</form>' - ].join('')), - - viewerTemplate: $.Handlebars.compile([ - '<div class="all-annotations" id="annotation-viewer-{{windowId}}">', - '{{#each annotations}}', - '<div class="annotation-display annotation-tooltip" data-anno-id="{{id}}">', - '<div class="button-container">', - '{{#if showUpdate}}<a href="#edit" class="edit"><i class="fa fa-pencil-square-o fa-fw"></i>{{t "edit"}}</a>{{/if}}', - '{{#if showDelete}}<a href="#delete" class="delete"><i class="fa fa-trash-o fa-fw"></i>{{t "delete"}}</a>{{/if}}', - '</div>', - '<div class="text-viewer">', - '{{#if username}}<p class="user">{{username}}:</p>{{/if}}', - '<p>{{{annoText}}}</p>', - '</div>', - '<div id="tags-viewer-{{windowId}}" class="tags-viewer">', - '{{#each tags}}', - '<span class="tag">{{this}}</span>', - '{{/each}}', - '</div>', - '</div>', - '{{/each}}', - '</div>' - ].join('')) - }; - -}(Mirador)); \ No newline at end of file diff --git a/js/src/annotations/catchEndpoint.js b/js/src/annotations/catchEndpoint.js deleted file mode 100644 index 7f4fbc90d5d0048825f842d1a1b96b4c2c69d9e1..0000000000000000000000000000000000000000 --- a/js/src/annotations/catchEndpoint.js +++ /dev/null @@ -1,391 +0,0 @@ -/* - * All Endpoints need to have at least the following: - * annotationsList - current list of OA Annotations - * dfd - Deferred Object - * init() - * search(options, successCallback, errorCallback) - * create(oaAnnotation, successCallback, errorCallback) - * update(oaAnnotation, successCallback, errorCallback) - * deleteAnnotation(annotationID, successCallback, errorCallback) (delete is a reserved word) - * TODO: - * read() //not currently used - * - * Optional, if endpoint is not OA compliant: - * getAnnotationInOA(endpointAnnotation) - * getAnnotationInEndpoint(oaAnnotation) - */ -(function($){ - - $.CatchEndpoint = function(options) { - - jQuery.extend(this, { - token: null, - prefix: null, - params: "", - dfd: null, - context_id: "None", - collection_id: "None", - userid: "test@mirador.org", - username: "mirador-test", - annotationsList: [], //OA list for Mirador use - annotationsListCatch: null, //internal list for module use - windowID: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.CatchEndpoint.prototype = { - //Set up some options for catch - init: function() { - this.catchOptions = { - user: { - id: this.userid, - name: this.username - }, - permissions: { - 'read': [], - 'update': [this.userid], - 'delete': [this.userid], - 'admin': [this.userid] - } - }; - }, - - set: function(prop, value, options) { - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - }, - - //Search endpoint for all annotations with a given URI - search: function(options, successCallback, errorCallback) { - var _this = this; - this.annotationsList = []; //clear out current list - - jQuery.ajax({ - url: this.prefix+"/search" + this.params, - type: 'GET', - dataType: 'json', - headers: { - "x-annotator-auth-token": this.token - }, - data: { - uri: options.uri, - userid : options.userid ? options.userid : undefined, - username : options.username ? options.username : undefined, - text : options.text ? options.text : undefined, - tag : options.tag ? options.tag : undefined, - parentid : options.parentid ? options.parentid : undefined, - contextId: _this.context_id, - collectionId: _this.collection_id, - media: options.media ? options.media : "image", - limit: options.limit ? options.limit : -1 - }, - - contentType: "application/json; charset=utf-8", - success: function(data) { - //check if a function has been passed in, otherwise, treat it as a normal search - if (typeof successCallback === "function") { - successCallback(data); - } else { - _this.annotationsListCatch = data.rows; - jQuery.each(_this.annotationsListCatch, function(index, value) { - _this.annotationsList.push(_this.getAnnotationInOA(value)); - }); - _this.dfd.resolve(true); - _this.eventEmitter.publish('catchAnnotationsLoaded.'+_this.windowID, _this.annotationsListCatch); - } - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } else { - console.log("There was an error searching this endpoint"); - } - } - - }); - }, - - deleteAnnotation: function(annotationID, successCallback, errorCallback) { - var _this = this; - jQuery.ajax({ - url: this.prefix+"/destroy/"+annotationID + this.params, - type: 'DELETE', - dataType: 'json', - headers: { - "x-annotator-auth-token": this.token - }, - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(); - } - _this.eventEmitter.publish('catchAnnotationDeleted.'+_this.windowID, annotationID); - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - - }); - }, - - update: function(oaAnnotation, successCallback, errorCallback) { - var annotations = this.getAnnotationInEndpoint(oaAnnotation), - _this = this; - - annotations.forEach(function(annotation) { - var annotationID = annotation.id; - - jQuery.ajax({ - url: _this.prefix+"/update/"+annotationID + _this.params, - type: 'POST', - dataType: 'json', - headers: { - "x-annotator-auth-token": _this.token - }, - data: JSON.stringify(annotation), - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(_this.getAnnotationInOA(data)); - } - _this.eventEmitter.publish('catchAnnotationUpdated.'+_this.windowID, annotation); - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }); - }, - - //takes OA Annotation, gets Endpoint Annotation, and saves - //if successful, MUST return the OA rendering of the annotation - create: function(oaAnnotation, successCallback, errorCallback) { - var _this = this, - annotations = this.getAnnotationInEndpoint(oaAnnotation); - annotations.forEach(function(annotation) { - _this.createCatchAnnotation(annotation, successCallback, errorCallback); - }); - }, - - createCatchAnnotation: function(catchAnnotation, successCallback, errorCallback) { - var _this = this; - - jQuery.ajax({ - url: this.prefix+"/create" + this.params, - type: 'POST', - dataType: 'json', - headers: { - "x-annotator-auth-token": this.token - }, - data: JSON.stringify(catchAnnotation), - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(_this.getAnnotationInOA(data)); - } - _this.eventEmitter.publish('catchAnnotationCreated.'+_this.windowID, data); - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - userAuthorize: function(action, annotation) { - var token, tokens, _i, _len; - //if this is an instructor, they have access to student annotations - if (this.roles && (this.roles.indexOf('Instructor') !== -1 || this.roles.indexOf('Administrator') !== -1)){ - return true; - } - //otherwise check annotation permissions - if (annotation.permissions) { - var permissionUserIds = annotation.permissions[action] || []; - //if no userids set for a permission, it is open to everyone - if (permissionUserIds.length === 0) { - return true; - } - //otherwise compare userid of annotation to current userid - if (permissionUserIds.indexOf(this.userid) !== -1) { - return true; - } - return false; - } else if (annotation.user) { - //if no permissions, just check userids - return this.userid === annotation.user.userid; - } - //otherwise, just return true - return true; - }, - - //Convert Endpoint annotation to OA - getAnnotationInOA: function(annotation) { - var id, - motivation = [], - resource = [], - on, - annotatedBy; - //convert annotation to OA format - - id = annotation.id; //need to make URI - - if (annotation.tags.length > 0) { - motivation.push("oa:tagging"); - jQuery.each(annotation.tags, function(index, value) { - resource.push({ - "@type":"oa:Tag", - "chars":value - }); - }); - } - if (annotation.parent && annotation.parent !== "0") { - motivation.push("oa:replying"); - on = annotation.parent; //need to make URI - } else { - var value; - motivation.push("oa:commenting"); - if (jQuery.isArray(annotation.rangePosition)) { - //dual strategy - on = annotation.rangePosition; - } else if (typeof annotation.rangePosition === 'object') { - //legacy strategy - value = "xywh="+annotation.rangePosition.x+","+annotation.rangePosition.y+","+annotation.rangePosition.width+","+annotation.rangePosition.height; - on = { "@type" : "oa:SpecificResource", - "full" : annotation.uri, - "selector": { - "@type": "oa:FragmentSelector", - "value": value - } - }; - } else { - //2.1 strategy - value = annotation.rangePosition; - on = { "@type" : "oa:SpecificResource", - "full" : annotation.uri, - "selector": { - "@type": "oa:SvgSelector", - "value": value - } - }; - } - } - resource.push( { - "@type" : "dctypes:Text", - "format" : "text/html", - "chars" : annotation.text - }); - - annotatedBy = { "@id" : annotation.user.id, - "name" : annotation.user.name}; - - var oaAnnotation = { - "@context" : "http://iiif.io/api/presentation/2/context.json", - "@id" : String(id), - "@type" : "oa:Annotation", - "motivation" : motivation, - "resource" : resource, - "on" : on, - "annotatedBy" : annotatedBy, - "annotatedAt" : annotation.created, - "serializedAt" : annotation.updated, - "permissions" : annotation.permissions, - "endpoint" : this - }; - return oaAnnotation; - }, - - // Converts OA Annotation to endpoint format - getAnnotationInEndpoint: function(oaAnnotation) { - var _this = this, - uris = []; - oaAnnotation.on.forEach(function(value) { - if (jQuery.inArray(value.full, uris) === -1) { - uris.push(value.full); - } - }); - var annotations = []; - - uris.forEach(function(uri) { - var annotation = {}, - tags = [], - text; - - if (oaAnnotation["@id"]) { - annotation.id = oaAnnotation["@id"]; - } - - annotation.media = "image"; - jQuery.each(oaAnnotation.resource, function(index, value) { - if (value['@type'] === 'oa:Tag') { - tags.push(value.chars); - } else if (value['@type'] === 'dctypes:Text') { - text = value.chars; - } - }); - annotation.tags = tags; - annotation.text = text; - - annotation.uri = uri; - annotation.contextId = _this.context_id; - annotation.collectionId = _this.collection_id; - annotation.rangePosition = oaAnnotation.on; - - var coordsArray = []; - oaAnnotation.on.forEach(function(value) { - var xywh = value.selector.default.value.split('=')[1].split(','); - coordsArray.push(xywh.map(function(i) {return parseInt(i);})); - }); - var left = coordsArray.map(function(i) {return i[0];}); - var top = coordsArray.map(function(i) {return i[1];}); - var right = coordsArray.map(function(i) {return i[0] + i[2];}); - var bottom = coordsArray.map(function(i) {return i[1] + i[3];}); - - var newRect = { - "x" : Math.min.apply(null, left), - "y" : Math.min.apply(null, top), - "width" : Math.max.apply(null, right) - Math.min.apply(null, left), - "height" : Math.max.apply(null, bottom) - Math.min.apply(null, top) - }; - - var canvas = _this.imagesList[$.getImageIndexById(_this.imagesList, uri)]; - var imageUrl = $.getThumbnailForCanvas(canvas, 300); - imageUrl = imageUrl.replace('full', newRect.x+','+newRect.y+','+newRect.width+','+newRect.height); - annotation.thumb = imageUrl; - annotation.bounds = {"x":newRect.x, "y":newRect.y, "width":newRect.width, "height":newRect.height}; - - annotation.updated = new Date().toISOString(); - if (oaAnnotation.annotatedAt) { - annotation.created = oaAnnotation.annotatedAt; - } else { - annotation.created = annotation.updated; - } - // this needs to come from LTI annotation.user.id, annotation.user.name - annotation.user = {}; - if (oaAnnotation.annotatedBy) { - annotation.user.name = oaAnnotation.annotatedBy.name; - annotation.user.id = oaAnnotation.annotatedBy['@id']; - } else { - annotation.user = _this.catchOptions.user; - } - annotation.permissions = _this.catchOptions.permissions; - annotation.archived = false; - annotation.ranges = []; - annotation.parent = "0"; - annotations.push(annotation); - }); - return annotations; - } - }; - -}(Mirador)); diff --git a/js/src/annotations/endpoint.js b/js/src/annotations/endpoint.js deleted file mode 100644 index ed0310461b2faf59aec738f86c2b7b0c1f69a13d..0000000000000000000000000000000000000000 --- a/js/src/annotations/endpoint.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * All Endpoints need to have at least the following: - * annotationsList - current list of OA Annotations - * dfd - Deferred Object - * init() - * search(options, successCallback, errorCallback) - * create(oaAnnotation, successCallback, errorCallback) - * update(oaAnnotation, successCallback, errorCallback) - * deleteAnnotation(annotationID, successCallback, errorCallback) (delete is a reserved word) - * TODO: - * read() //not currently used - * - * Optional, if endpoint is not OA compliant: - * getAnnotationInOA(endpointAnnotation) - * getAnnotationInEndpoint(oaAnnotation) - */ -(function($){ - - $.Endpoint = function(options) { - - jQuery.extend(this, { - dfd: null, - annotationsList: [], //OA list for Mirador use - windowID: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.Endpoint.prototype = { - init: function() { - //whatever initialization your endpoint needs - }, - - //Search endpoint for all annotations with a given URI in options - search: function(options, successCallback, errorCallback) { - var _this = this; - - //use options.uri - jQuery.ajax({ - url: '', - type: 'GET', - dataType: 'json', - headers: { }, - data: { }, - contentType: "application/json; charset=utf-8", - success: function(data) { - //check if a function has been passed in, otherwise, treat it as a normal search - if (typeof successCallback === "function") { - successCallback(data); - } else { - jQuery.each(data, function(index, value) { - _this.annotationsList.push(_this.getAnnotationInOA(value)); - }); - _this.dfd.resolve(true); - } - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - //Delete an annotation by endpoint identifier - deleteAnnotation: function(annotationID, successCallback, errorCallback) { - var _this = this; - jQuery.ajax({ - url: '', - type: 'DELETE', - dataType: 'json', - headers: { }, - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(); - } - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - //Update an annotation given the OA version - update: function(oaAnnotation, successCallback, errorCallback) { - var annotation = this.getAnnotationInEndpoint(oaAnnotation), - _this = this; - - jQuery.ajax({ - url: '', - type: 'POST', - dataType: 'json', - headers: { }, - data: '', - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(); - } - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - //takes OA Annotation, gets Endpoint Annotation, and saves - //if successful, MUST return the OA rendering of the annotation - create: function(oaAnnotation, successCallback, errorCallback) { - var _this = this; - - jQuery.ajax({ - url: '', - type: 'POST', - dataType: 'json', - headers: { }, - data: '', - contentType: "application/json; charset=utf-8", - success: function(data) { - if (typeof successCallback === "function") { - successCallback(_this.getAnnotationInOA(data)); - } - }, - error: function() { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - set: function(prop, value, options) { - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - }, - - //Convert Endpoint annotation to OA - getAnnotationInOA: function(annotation) { - }, - - // Converts OA Annotation to endpoint format - getAnnotationInEndpoint: function(oaAnnotation) { - } - }; - -}(Mirador)); diff --git a/js/src/annotations/legacyOpenAnnotationStrategy.js b/js/src/annotations/legacyOpenAnnotationStrategy.js deleted file mode 100644 index a1d7b906576eb79b3ba85d7c2205b9cac3ea562a..0000000000000000000000000000000000000000 --- a/js/src/annotations/legacyOpenAnnotationStrategy.js +++ /dev/null @@ -1,41 +0,0 @@ -(function($) { - - $.LegacyOpenAnnotationStrategy = function(options) { - jQuery.extend(this, { - - }, options); - this.init(); - }; - - $.LegacyOpenAnnotationStrategy.prototype = { - init: function() { - - }, - - // Check whether an annotation is supported under this formatting strategy - isThisType: function(annotation) { - if (annotation.on && typeof annotation.on === 'string') { - return annotation.on.indexOf('xywh=') !== -1; - } - return false; - }, - - // Build the selector into a bare annotation, given a Window and an OsdSvgOverlay - buildAnnotation: function(options) { - var oaAnno = options.annotation, - win = options.window, - overlay = options.overlay, - bounds = overlay.draftPaths[0].bounds; - oaAnno.on = win.canvasID + "#xywh=" + Math.round(bounds.x) + "," + Math.round(bounds.y) + "," + Math.round(bounds.width) + "," + Math.round(bounds.height); - return oaAnno; - }, - - // Parse the annotation into the OsdRegionDrawTool instance (only if its format is supported by this strategy) - parseRegion: function(annotation, osdRegionDrawTool) { - if (this.isThisType(annotation)) { - return osdRegionDrawTool.parseRectangle(annotation.on, annotation); - } - }, - }; - -}(Mirador)); \ No newline at end of file diff --git a/js/src/annotations/localStorageEndpoint.js b/js/src/annotations/localStorageEndpoint.js deleted file mode 100644 index b4cac53547a56c35cde0412cf071ac71979c3c2f..0000000000000000000000000000000000000000 --- a/js/src/annotations/localStorageEndpoint.js +++ /dev/null @@ -1,226 +0,0 @@ -/* - * All Endpoints need to have at least the following: - * annotationsList - current list of OA Annotations - * dfd - Deferred Object - * init() - * search(options, successCallback, errorCallback) - * create(oaAnnotation, successCallback, errorCallback) - * update(oaAnnotation, successCallback, errorCallback) - * deleteAnnotation(annotationID, successCallback, errorCallback) (delete is a reserved word) - * TODO: - * read() //not currently used - * - * Optional, if endpoint is not OA compliant: - * getAnnotationInOA(endpointAnnotation) - * getAnnotationInEndpoint(oaAnnotation) - */ -(function($){ - - $.LocalStorageEndpoint = function(options) { - - jQuery.extend(this, { - token: null, - prefix: null, - dfd: null, - annotationsList: [], - windowID: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.LocalStorageEndpoint.prototype = { - //Set up some options for catch - init: function() { - }, - - set: function(prop, value, options) { - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - }, - - //Search endpoint for all annotations with a given URI - search: function(options, successCallback, errorCallback) { - var _this = this; - this.annotationsList = []; //clear out current list - - try { - _this.annotationsList = _this.getAnnotationList(options.uri); - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - if (typeof successCallback === "function") { - successCallback(_this.annotationsList); - } else { - _this.dfd.resolve(true); - } - } catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } else { - console.log("There was an error searching this endpoint"); - } - } - }, - - deleteAnnotation: function(annotationID, successCallback, errorCallback) { - var _this = this, - keys = []; - jQuery.each(_this.annotationsList[0].on, function(index, value) { - if (jQuery.inArray(value.full, keys) === -1) { - keys.push(value.full); - } - }); - - if (keys.length === 0) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - jQuery.each(keys, function(index, key) { - try { - //find the matching annotation in the array and update it - _this.annotationsList = jQuery.grep(_this.annotationsList, function(value, index) { - return value['@id'] !== annotationID; - }); - - //remove endpoint reference before JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - //add endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - if (typeof successCallback === "function") { - successCallback(); - } - } catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - update: function(oaAnnotation, successCallback, errorCallback) { - var _this = this, - annotationID = oaAnnotation['@id'], - keys = []; - jQuery.each(oaAnnotation.on, function(index, value) { - if (jQuery.inArray(value.full, keys) === -1) { - keys.push(value.full); - } - }); - - if (keys.length === 0) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - jQuery.each(keys, function(index, key) { - try { - if (_this.annotationsList.length === 0) { - _this.annotationsList = _this.getAnnotationList(key); - } - //find the matching annotation in the array and update it - jQuery.each(_this.annotationsList, function(index, value) { - if (value['@id'] === annotationID) { - _this.annotationsList[index] = oaAnnotation; - return false; - } - }); - - //remove endpoint reference before JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - //add endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - if (typeof successCallback === "function") { - successCallback(oaAnnotation); - } - } catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - //takes OA Annotation, gets Endpoint Annotation, and saves - //if successful, MUST return the OA rendering of the annotation - create: function(oaAnnotation, successCallback, errorCallback) { - var _this = this, - keys = []; - jQuery.each(oaAnnotation.on, function(index, value) { - if (jQuery.inArray(value.full, keys) === -1) { - keys.push(value.full); - } - }); - - if (keys.length === 0) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - jQuery.each(keys, function(index, key) { - try { - if (_this.annotationsList.length === 0) { - _this.annotationsList = _this.getAnnotationList(key); - } - oaAnnotation["@id"] = $.genUUID(); - _this.annotationsList.push(oaAnnotation); - - //remove endpoint reference before JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - delete value.endpoint; - }); - - localStorage.setItem(key, JSON.stringify(_this.annotationsList)); - - //add endpoint reference after JSON.stringify - jQuery.each(_this.annotationsList, function(index, value) { - value.endpoint = _this; - }); - - if (typeof successCallback === "function") { - successCallback(oaAnnotation); - } - } catch (e) { - if (typeof errorCallback === "function") { - errorCallback(); - } - } - }); - }, - - getAnnotationList: function(key) { - var data = localStorage.getItem(key); - if (data) { - return JSON.parse(data); - } else { - return []; - } - }, - - userAuthorize: function(action, annotation) { - return true; - } - }; - -}(Mirador)); diff --git a/js/src/annotations/mirador21Strategy.js b/js/src/annotations/mirador21Strategy.js deleted file mode 100644 index 77a6c772048c8d5bf5b110bf96bee6314947f90b..0000000000000000000000000000000000000000 --- a/js/src/annotations/mirador21Strategy.js +++ /dev/null @@ -1,55 +0,0 @@ -(function($) { - - $.Mirador21Strategy = function(options) { - jQuery.extend(this, { - - }, options); - this.init(); - }; - - $.Mirador21Strategy.prototype = { - init: function() { - - }, - - // Check whether an annotation is supported under this formatting strategy - isThisType: function(annotation) { - if (annotation.on && typeof annotation.on === 'object' && - annotation.on.selector && typeof annotation.on.selector === 'object' && - annotation.on.selector.value && typeof annotation.on.selector.value === 'string' && - annotation.on.selector['@type'] === 'oa:SvgSelector') { - return true; - } - return false; - }, - - // Build the selector into a bare annotation, given a Window and an OsdSvgOverlay - buildAnnotation: function(options) { - var oaAnno = options.annotation, - win = options.window, - overlay = options.overlay, - svg = overlay.getSVGString(overlay.draftPaths); - oaAnno.on = { - "@type": "oa:SpecificResource", - "full": win.canvasID, - "selector": { - "@type": "oa:SvgSelector", - "value": svg - }, - "within": { - "@id": win.loadedManifest, - "@type": "sc:Manifest" - } - }; - return oaAnno; - }, - - // Parse the annotation into the OsdRegionDrawTool instance (only if its format is supported by this strategy) - parseRegion: function(annotation, osdRegionDrawTool) { - if (this.isThisType(annotation)) { - return osdRegionDrawTool.svgOverlay.parseSVG(annotation.on.selector.value, annotation); - } - }, - }; - -}(Mirador)); \ No newline at end of file diff --git a/js/src/annotations/miradorDualStrategy.js b/js/src/annotations/miradorDualStrategy.js deleted file mode 100644 index 581c4381f00d9f9687828fbf7c482b6e3eadab78..0000000000000000000000000000000000000000 --- a/js/src/annotations/miradorDualStrategy.js +++ /dev/null @@ -1,75 +0,0 @@ -(function($) { - - $.MiradorDualStrategy = function(options) { - jQuery.extend(this, { - - }, options); - this.init(); - }; - - $.MiradorDualStrategy.prototype = { - init: function() { - - }, - - // Check whether an annotation is supported under this formatting strategy - isThisType: function(annotation) { - if (annotation.on && jQuery.isArray(annotation.on) && annotation.on.length > 0 && typeof annotation.on[0] === 'object' && - annotation.on[0].selector && typeof annotation.on[0].selector === 'object' && - annotation.on[0].selector['@type'] === 'oa:Choice' && - annotation.on[0].selector.default && typeof annotation.on[0].selector.default === 'object' && - annotation.on[0].selector.default.value && typeof annotation.on[0].selector.default.value === 'string' && - annotation.on[0].selector.item && typeof annotation.on[0].selector.item === 'object' && - annotation.on[0].selector.item.value && typeof annotation.on[0].selector.item.value === 'string' - ) { - return annotation.on[0].selector.default.value.indexOf('xywh=') === 0 && annotation.on[0].selector.item.value.indexOf('<svg') === 0; - } - return false; - }, - - // Build the selector into a bare annotation, given a Window and an OsdSvgOverlay - buildAnnotation: function(options) { - var oaAnno = options.annotation, - win = options.window, - overlay = options.overlay; - oaAnno.on = []; - jQuery.each(overlay.draftPaths, function(index, path) { - // getSVGString expects an array, so insert each path into a new array - var svg = overlay.getSVGString([path]), - bounds = path.bounds; - oaAnno.on.push({ - "@type": "oa:SpecificResource", - "full": win.canvasID, - "selector": { - "@type": "oa:Choice", - "default": { - "@type": "oa:FragmentSelector", - "value": "xywh=" + Math.round(bounds.x) + "," + Math.round(bounds.y) + "," + Math.round(bounds.width) + "," + Math.round(bounds.height) - }, - "item": { - "@type": "oa:SvgSelector", - "value": svg - } - }, - "within": { - "@id": win.loadedManifest, - "@type": "sc:Manifest" - } - }); - }); - return oaAnno; - }, - - // Parse the annotation into the OsdRegionDrawTool instance (only if its format is supported by this strategy) - parseRegion: function(annotation, osdRegionDrawTool) { - if (this.isThisType(annotation)) { - var regionArray = []; - jQuery.each(annotation.on, function(index, target) { - regionArray = regionArray.concat(osdRegionDrawTool.svgOverlay.parseSVG(target.selector.item.value, annotation)); - }); - return regionArray; - } - }, - }; - -}(Mirador)); diff --git a/js/src/annotations/miradorLegacyStrategy.js b/js/src/annotations/miradorLegacyStrategy.js deleted file mode 100644 index d7ad06b369e0cde3ad7965dfa1a5d606a85dfd14..0000000000000000000000000000000000000000 --- a/js/src/annotations/miradorLegacyStrategy.js +++ /dev/null @@ -1,51 +0,0 @@ -(function($) { - - $.MiradorLegacyStrategy = function(options) { - jQuery.extend(this, { - - }, options); - this.init(); - }; - - $.MiradorLegacyStrategy.prototype = { - init: function() { - - }, - - // Check whether an annotation is supported under this formatting strategy - isThisType: function(annotation) { - if (annotation.on && typeof annotation.on === 'object' && - annotation.on.selector && typeof annotation.on.selector === 'object' && - annotation.on.selector.value && typeof annotation.on.selector.value === 'string' && - annotation.on.selector['@type'] === 'oa:FragmentSelector') { - return annotation.on.selector.value.indexOf('xywh=') === 0; - } - return false; - }, - - // Build the selector into a bare annotation, given a Window and an OsdSvgOverlay - buildAnnotation: function(options) { - var oaAnno = options.annotation, - win = options.window, - overlay = options.overlay, - bounds = overlay.draftPaths[0].bounds; - oaAnno.on = { - "@type": "oa:SpecificResource", - "full": win.canvasID, - "selector": { - "@type": "oa:FragmentSelector", - "value": "xywh=" + Math.round(bounds.x) + "," + Math.round(bounds.y) + "," + Math.round(bounds.width) + "," + Math.round(bounds.height) - } - }; - return oaAnno; - }, - - // Parse the annotation into the OsdRegionDrawTool instance (only if its format is supported by this strategy) - parseRegion: function(annotation, osdRegionDrawTool) { - if (this.isThisType(annotation)) { - return osdRegionDrawTool.parseRectangle(annotation.on.full + "#" + annotation.on.selector.value, annotation); - } - }, - }; - -}(Mirador)); \ No newline at end of file diff --git a/js/src/annotations/osd-region-draw-tool.js b/js/src/annotations/osd-region-draw-tool.js deleted file mode 100644 index 4c19af40a66f07d930ff4c3a5b8cafb8ea27408f..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-region-draw-tool.js +++ /dev/null @@ -1,322 +0,0 @@ -(function($) { - $.OsdRegionDrawTool = function(options) { - jQuery.extend(this, { - osdViewer: null, - parent: null, - osd: null, - list: null, - annotationsToShapesMap: {}, - eventEmitter: null - }, options); - - this.eventsSubscriptions = []; - - this.init(); - }; - - $.OsdRegionDrawTool.prototype = { - - init: function() { - this.svgOverlay = this.osdViewer.svgOverlay(this.osdViewer.id, this.windowId, this.state, this.eventEmitter); - this.svgOverlay.show(); - this.svgOverlay.disable(); - - this.horizontallyFlipped = false; - - this.listenForActions(); - }, - - enterDisplayAnnotations: function() { - this.svgOverlay.setMouseTool(); - - // if a user selected the pointer mode but is still actively - // working on an annotation, don't re-render - if (!this.svgOverlay.inEditOrCreateMode) { - this.exitEditMode(true); - this.render(); - } else { - this.svgOverlay.checkToRemoveFocus(); - } - }, - - enterCreateAnnotation: function() { - // if a user selected went from pointer to a shape but is still actively - // working on an annotation, don't re-render - if (!this.svgOverlay.inEditOrCreateMode) { - this.osdViewer.setMouseNavEnabled(false); - this.svgOverlay.show(); - this.svgOverlay.enable(); - this.render(); - } else { - this.svgOverlay.checkToRemoveFocus(); - } - }, - - enterCreateShape: function() { - if (!this.svgOverlay.inEditOrCreateMode) { - this.osdViewer.setMouseNavEnabled(false); - this.svgOverlay.show(); - this.svgOverlay.enable(); - } else { - this.svgOverlay.checkToRemoveFocus(); - } - }, - - enterEditAnnotation: function() { - this.osdViewer.setMouseNavEnabled(false); - this.svgOverlay.show(); - this.svgOverlay.enableEdit(); - }, - - enterDefault: function() { - // Removing the Tool explicitly because otherwise mouse events keep - // firing in default mode where they shouldn't. - this.svgOverlay.removeMouseTool(); - - this.exitEditMode(false); - }, - - exitEditMode: function(showAnnotations) { - this.osdViewer.setMouseNavEnabled(true); - this.svgOverlay.disable(); - if (showAnnotations) { - this.svgOverlay.show(); - } else { - this.svgOverlay.hide(); - } - }, - - render: function () { - if(this.parent.mode !== $.AnnotationsLayer.DISPLAY_ANNOTATIONS){ - return ; - } - this.svgOverlay.restoreEditedShapes(); - this.svgOverlay.paperScope.activate(); - this.svgOverlay.paperScope.project.clear(); - var _this = this; - _this.annotationsToShapesMap = {}; - var strategies = [ - new $.Mirador21Strategy(), - new $.LegacyOpenAnnotationStrategy(), - new $.MiradorLegacyStrategy(), - new $.MiradorDualStrategy() - ]; - - for (var i = 0; i < this.list.length; i++) { - var annotation = this.list[i]; - try { - var shapeArray = this.prepareShapeArray(annotation, strategies); - if (shapeArray.length > 0) { - _this.svgOverlay.restoreLastView(shapeArray); - _this.annotationsToShapesMap[annotation['@id']] = shapeArray; - } else { - console.log("ERROR couldn't find a strategy for " + annotation["@id"]); - } - } catch(e) { - console.log('ERROR OsdRegionDrawTool#render anno:', annotation, 'error:', e); - } - } - - var windowElement = _this.state.getWindowElement(_this.windowId); - this.annoTooltip = new $.AnnotationTooltip({ - targetElement: jQuery(this.osdViewer.element), - state: _this.state, - eventEmitter: _this.eventEmitter, - windowId: _this.windowId - }); - this.annoTooltip.initializeViewerUpgradableToEditor({ - container: windowElement, - viewport: windowElement, - getAnnoFromRegion: _this.getAnnoFromRegion.bind(this) - }); - this.svgOverlay.paperScope.view.draw(); - _this.eventEmitter.publish('annotationsRendered.' + _this.windowId); - }, - - prepareShapeArray: function(annotation, strategies) { - if (typeof annotation === 'object' && annotation.on) { - for (var i = 0; i < strategies.length; i++) { - if (strategies[i].isThisType(annotation)) { - var shapeArray = strategies[i].parseRegion(annotation, this); - return shapeArray; - } - } - } - return []; - }, - - parseRectangle: function(rectString, annotation) { - var shapeArray = rectString.split('=')[1].split(','), - shape = { - 'x': parseInt(shapeArray[0]), - 'y': parseInt(shapeArray[1]), - 'width': parseInt(shapeArray[2]), - 'height': parseInt(shapeArray[3]) - }; - - return this.svgOverlay.createRectangle(shape, annotation); - }, - - showTooltipsFromMousePosition: function(event, location, absoluteLocation) { - var _this = this; - var originWindow = this.state.getWindowObjectById(this.windowId); - var currentCanvasModel = originWindow.canvases[originWindow.canvasID]; - - var hitOptions = { - fill: true, - stroke: true, - segments: true - }; - var hoverColor = this.state.getStateProperty('drawingToolsSettings').hoverColor; - var annotations = []; - if (this.horizontallyFlipped) { - location.x = currentCanvasModel.getBounds().width - location.x; - } - for (var key in _this.annotationsToShapesMap) { - if (_this.annotationsToShapesMap.hasOwnProperty(key)) { - var shapeArray = _this.annotationsToShapesMap[key]; - for (var idx = 0; idx < shapeArray.length; idx++) { - var shapeTool = this.svgOverlay.getTool(shapeArray[idx]); - var hoverWidth = shapeArray[idx].data.strokeWidth / this.svgOverlay.paperScope.view.zoom; - if (shapeArray[idx].hitTest(location, hitOptions)) { - annotations.push(shapeArray[idx].data.annotation); - if(shapeTool.onHover){ - for(var k=0;k<shapeArray.length;k++){ - shapeTool.onHover(true,shapeArray[k],hoverWidth,hoverColor); - } - } - break; - }else{ - if(shapeTool.onHover){ - shapeTool.onHover(false,shapeArray[idx],hoverWidth); - } - } - } - } - } - this.svgOverlay.paperScope.view.draw(); - //if (_this.svgOverlay.availableExternalCommentsPanel) { - // _this.eventEmitter.publish('annotationMousePosition.' + _this.windowId, [annotations]); - // return; - //} - _this.annoTooltip.showViewer({ - annotations: annotations, - triggerEvent: event, - shouldDisplayTooltip: function(api) { - //track whether the cursor is within the tooltip (with the specified tolerance) and disables show/hide/update functionality. - if (api.elements.tooltip) { - var cursorWithinTooltip = true; - var leftSide = api.elements.tooltip.offset().left - _this.svgOverlay.hitOptions.tolerance; - var rightSide = api.elements.tooltip.offset().left + api.elements.tooltip.width() + _this.svgOverlay.hitOptions.tolerance; - if (absoluteLocation.x < leftSide || rightSide < absoluteLocation.x) { - cursorWithinTooltip = false; - } - var topSide = api.elements.tooltip.offset().top - _this.svgOverlay.hitOptions.tolerance; - var bottomSide = api.elements.tooltip.offset().top + api.elements.tooltip.height() + _this.svgOverlay.hitOptions.tolerance; - if (absoluteLocation.y < topSide || bottomSide < absoluteLocation.y) { - cursorWithinTooltip = false; - } - return !cursorWithinTooltip; - } - return true; - } - }); - }, - - listenForActions: function() { - var _this = this; - - this._thisDestroy = function(){ - _this.destroy(); - }; - - _this.osdViewer.addHandler('close', this._thisDestroy); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe('DESTROY_EVENTS.'+this.windowId, function(event) { - _this.destroy(); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('updateTooltips.' + _this.windowId, function(event, location, absoluteLocation) { - if (_this.annoTooltip && !_this.annoTooltip.inEditOrCreateMode) { - _this.showTooltipsFromMousePosition(event, location, absoluteLocation); - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('removeTooltips.' + _this.windowId, function() { - jQuery(_this.osdViewer.element).qtip('destroy', true); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('disableTooltips.' + _this.windowId, function() { - if (_this.annoTooltip) { - _this.annoTooltip.inEditOrCreateMode = true; - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('enableTooltips.' + _this.windowId, function() { - if (_this.annoTooltip) { - _this.annoTooltip.inEditOrCreateMode = false; - } - _this.svgOverlay.restoreDraftShapes(); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('SET_ANNOTATION_EDITING.' + _this.windowId, function(event, options) { - jQuery.each(_this.annotationsToShapesMap, function(key, paths) { - // if we have a matching annotationId, pass the boolean value on for each path, otherwise, always pass false - if (key === options.annotationId) { - if (options.isEditable) { - _this.eventEmitter.publish('SET_OVERLAY_TOOLTIP.' + _this.windowId, {"tooltip" : options.tooltip, "visible" : true, "paths" : paths}); - } else { - _this.eventEmitter.publish('SET_OVERLAY_TOOLTIP.' + _this.windowId, {"tooltip" : null, "visible" : false, "paths" : []}); - } - jQuery.each(paths, function(index, path) { - path.data.editable = options.isEditable; - if (options.isEditable) { - path.strokeWidth = (path.data.strokeWidth + 5) / _this.svgOverlay.paperScope.view.zoom; - } else { - path.strokeWidth = path.data.strokeWidth / _this.svgOverlay.paperScope.view.zoom; - } - //just in case, force the shape to be non hovered - var tool = _this.svgOverlay.getTool(path); - tool.onHover(false, path, path.strokeWidth); - }); - } else { - jQuery.each(paths, function(index, path) { - path.data.editable = false; - }); - } - }); - _this.svgOverlay.paperScope.view.draw(); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('refreshOverlay.' + _this.windowId, function (event) { - _this.render(); - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe("enableManipulation",function(event, tool){ - if(tool === 'mirror') { - _this.horizontallyFlipped = true; - } - })); - this.eventsSubscriptions.push(this.eventEmitter.subscribe("disableManipulation",function(event, tool){ - if(tool === 'mirror') { - _this.horizontallyFlipped = false; - } - })); - }, - - getAnnoFromRegion: function(regionId) { - return this.list.filter(function(annotation) { - return annotation['@id'] === regionId; - }); - }, - - destroy: function () { - var _this = this; - this.eventsSubscriptions.forEach(function(event){ - _this.eventEmitter.unsubscribe(event.name,event.handler); - }); - this.osdViewer.removeHandler('close', this._thisDestroy); - } - - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-ellipse.js b/js/src/annotations/osd-svg-ellipse.js deleted file mode 100644 index 20ac563cc7319c4eda7a9a7f888128251b1156bb..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-ellipse.js +++ /dev/null @@ -1,440 +0,0 @@ -(function($) { - $.Ellipse = function(options) { - jQuery.extend(this, { - name: 'Ellipse', - logoClass: 'radio_button_unchecked', - idPrefix: 'ellipse_', - tooltip: 'ellipseTooltip' - }, options); - - this.init(); - }; - - $.Ellipse.prototype = { - init: function () { - }, - - createShape: function (initialPoint, overlay) { - overlay.mode = 'create'; - var segments = []; - // point indexes - // 1&2&3 - // 0 ─ 4 - // / \ - // 9 | | 5 - // \ / - // 8 ─ 6 - // 7 - // points 1 & 2 & 3 are workaround used to draw rotation handle - var pixel = 1 / overlay.paperScope.view.zoom; - segments.push(new overlay.paperScope.Point(initialPoint.x - 2 * pixel, initialPoint.y - 2 * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1 * pixel, initialPoint.y - (Math.sqrt(2) + 1) * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1 * pixel, initialPoint.y - (Math.sqrt(2) + 1) * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1 * pixel, initialPoint.y - (Math.sqrt(2) + 1) * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x, initialPoint.y - 2 * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x + (Math.sqrt(2) - 1) * pixel, initialPoint.y - 1 * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x, initialPoint.y)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1 * pixel, initialPoint.y + (Math.sqrt(2) - 1) * pixel)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 2 * pixel, initialPoint.y)); - segments.push(new overlay.paperScope.Point(initialPoint.x - (Math.sqrt(2) + 1) * pixel, initialPoint.y - 1 * pixel)); - var _this = this; - var shape = new overlay.paperScope.Path({ - segments: segments, - name: overlay.getName(_this) - }); - shape.dashArray = overlay.dashArray; - shape.data.strokeWidth = overlay.strokeWidth; - shape.strokeWidth = shape.data.strokeWidth / overlay.paperScope.view.zoom; - shape.strokeColor = overlay.strokeColor; - shape.fillColor = overlay.fillColor; - shape.fillColor.alpha = overlay.fillColorAlpha; - shape.closed = true; - shape.data.rotation = 0; - overlay.segment = shape.segments[6]; - this.updateSelection(true, shape, overlay); - return shape; - }, - - updateSelection: function (selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) != -1) { - if (item.segments.length > 10) { - item.removeSegment(10); - } - item.smooth({from: -7, to: 1}); - item.selected = selected; - item.segments[2].selected = selected; - var inHandle = item.segments[7].handleIn.clone(); - inHandle = inHandle.multiply(-1); - var outHandle = item.segments[7].handleOut.clone(); - outHandle = outHandle.multiply(-1); - item.segments[1].handleIn = inHandle; - item.segments[1].handleOut = new overlay.paperScope.Point(0, 0); - item.segments[2].handleIn = new overlay.paperScope.Point(0, 0); - item.segments[2].handleOut = new overlay.paperScope.Point(0, 0); - item.segments[3].handleIn = new overlay.paperScope.Point(0, 0); - item.segments[3].handleOut = outHandle; - - if (selected) { - // item.segments[2].handleOut = new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom); - // item.segments[2].data = 'rotation_handle'; - // item.segments[2].handleOut = item.segments[2].handleOut.rotate(item.data.rotation, item.segments[2]); - var point = item.segments[2].point.clone(); - point = point.add(item.segments[2].handleOut); - if (item.contains(point)) { - item.segments[2].handleOut = item.segments[2].handleOut.rotate(180, item.segments[2]); - } - - if (!item.data.deleteIcon) { - item.data.deleteIcon = new overlay.annotationUtils.DeleteActionIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'delete', - fillColor: item.selectedColor - }); - - item.data.deleteIcon.addData('parent', item); - item.data.deleteIcon.addData('pivot',item.segments[7].point); - item.data.deleteIcon.addData('type', 'deleteIcon'); - item.data.deleteIcon.addData('self', item.data.deleteIcon); - - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - item.data.deleteIcon.setOnMouseDownListener(overlay); - - } - - if (!item.data.rotationIcon) { - - item.data.rotationIcon = new overlay.annotationUtils.RotationIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'rotation', - fillColor: item.selectedColor - }); - - item.data.rotationIcon.addData('pivot',item.segments[3].point); - item.data.rotationIcon.addData('type', 'rotationIcon'); - item.data.rotationIcon.addData('self', item.data.rotationIcon); - item.data.rotationIcon.addData('parent', item); - - item.data.rotationIcon.setPosition(item.data.rotationIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - - item.data.rotationIcon.setOnMouseDownListener(overlay); - - } - - if (!item.data.group) { - item.data.group = new overlay.annotationUtils.Group(overlay.paperScope,[item,item.data.deleteIcon.getItem(),item.data.deleteIcon.getMask().getItem(),item.data.rotationIcon.getItem(),item.data.rotationIcon.getMask().getItem()]); - } - - if(item.contains(item.data.deleteIcon.getItem().position)){ - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - item.data.deleteIcon.rotate(180,item.data.deleteIcon.getData('pivot')); - item.data.deleteIcon.rotate(180); - } - - if(item.contains(item.data.rotationIcon.getItem().position)){ - item.data.rotationIcon.setPosition(item.data.rotationIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - item.data.rotationIcon.rotate(180,item.data.rotationIcon.getData('pivot')); - item.data.rotationIcon.rotate(180); - } - - } else { - if(item.data.group){ - item.data.group.remove(); - item.data.group = null; - overlay.paperScope.project.activeLayer.addChild(item); - } - - if(item.data.deleteIcon){ - item.data.deleteIcon.remove(); - item.data.deleteIcon = null; - } - - if(item.data.rotationIcon){ - item.data.rotationIcon.remove(); - item.data.rotationIcon = null; - } - - item.segments[2].handleOut = new overlay.paperScope.Point(0, 0); - } - } - }, - - onResize:function(item,overlay){ - if(item._name.toString().indexOf(this.partOfPrefix)!== -1){ - if(item._name.toString().indexOf('delete') !== -1){ - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.parent.data.rotation))); - - if(item.data.parent.contains(item.position)){ - item.data.self.rotate(180,item.data.self.getData('pivot')); - item.data.self.rotate(180); - } - - item.data.self.resize(24 * 1 / overlay.paperScope.view.zoom); - } - - if(item._name.toString().indexOf('rotation') !== -1){ - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.parent.data.rotation))); - - if(item.data.parent.contains(item.position)){ - item.data.self.rotate(180,item.data.self.getData('pivot')); - item.data.self.rotate(180); - } - - item.data.self.resize(16 * 1 / overlay.paperScope.view.zoom); - } - - } - }, - - onHover: function (activate, shape, hoverWidth, hoverColor) { - shape.strokeWidth = hoverWidth; - - // shape needs to have hovered styles - if (activate && !shape.data.hovered) { - shape.data.nonHoverStrokeColor = shape.strokeColor.clone(); - shape.data.hovered = true; - shape.strokeColor = hoverColor; - } - // shape is not longer hovered - if (!activate && shape.data.hovered) { - shape.strokeColor = shape.data.nonHoverStrokeColor.clone(); - delete shape.data.nonHoverStrokeColor; - delete shape.data.hovered; - } - }, - - onMouseUp: function (event, overlay) { - if (overlay.mode == 'create' && overlay.path) { - overlay.onDrawFinish(); - } else if (overlay.mode === 'translate' || overlay.mode === 'deform' && overlay.path) { - overlay.onEditFinish(); - } - }, - - translate: function (event, overlay) { - for (var i = 0; i < overlay.path.segments.length; i++) { - overlay.path.segments[i].point.x += event.delta.x; - overlay.path.segments[i].point.y += event.delta.y; - } - - overlay.path.data.rotationIcon.translateByXY(event.delta.x, event.delta.y); - overlay.path.data.deleteIcon.translateByXY(event.delta.x,event.delta.y); - }, - - rotate:function(event,overlay){ - var center = overlay.path.position; - var rotation = Math.atan2(event.point.y - center.y + event.delta.y, event.point.x - center.x + event.delta.x) - Math.atan2(event.point.y - center.y, event.point.x - center.x); - rotation = rotation * (180 / Math.PI); - - - overlay.path.data.group.rotate(rotation,overlay.path.position); - - overlay.path.data.deleteIcon.rotate(-rotation); - overlay.path.data.rotationIcon.rotate(-rotation); - - overlay.path.data.rotation += rotation; - }, - - onMouseDrag: function (event, overlay) { - if (overlay.mode == 'translate') { - this.translate(event, overlay); - return; - } - - if (overlay.mode === 'rotate') { - this.rotate(event, overlay); - return; - } - - if (overlay.mode == 'create' || overlay.mode == 'deform') { - var idx = -1; - for (var l = 0; l < overlay.path.segments.length; l++) { - if (overlay.path.segments[l] == overlay.segment) { - idx = l; - break; - } - } - - var translation = new overlay.paperScope.Point(event.delta.x, event.delta.y); - var rot = overlay.path.data.rotation; - translation = translation.rotate(-rot); - var translationX = new overlay.paperScope.Point(translation.x, 0); - translationX = translationX.rotate(rot); - var translationY = new overlay.paperScope.Point(0, translation.y); - translationY = translationY.rotate(rot); - if (idx === 0 || idx === 4 || idx === 6 || idx === 8) { - translationX = translationX.multiply(2 / (1 + Math.sqrt(1 / 2))); - translationY = translationY.multiply(2 / (1 + Math.sqrt(1 / 2))); - } - var moveTopSize = idx === 0 || idx === 1 || idx === 2 || idx === 3 || idx === 4; - var moveBottomSize = idx === 6 || idx === 7 || idx === 8; - var moveRightSize = idx === 4 || idx === 5 || idx === 6; - var moveLeftSize = idx === 0 || idx === 8 || idx === 9; - if (moveTopSize) { - overlay.path.data.rotationIcon.translateByPoint(translationY); - overlay.path.segments[1].point = overlay.path.segments[1].point.add(translationY); - overlay.path.segments[2].point = overlay.path.segments[2].point.add(translationY); - overlay.path.segments[3].point = overlay.path.segments[3].point.add(translationY); - var trTop = translationY.clone(); - trTop = trTop.multiply((1 + Math.sqrt(1 / 2)) / 2); - overlay.path.segments[0].point = overlay.path.segments[0].point.add(trTop); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(trTop); - trTop = trTop.multiply((1 - Math.sqrt(1 / 2)) / (1 + Math.sqrt(1 / 2))); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(trTop); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(trTop); - } - if (moveBottomSize) { - - overlay.path.data.deleteIcon.translateByPoint(translationY); - - overlay.path.segments[7].point = overlay.path.segments[7].point.add(translationY); - var trBottom = translationY.clone(); - trBottom = trBottom.multiply((1 + Math.sqrt(1 / 2)) / 2); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(trBottom); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(trBottom); - trBottom = trBottom.multiply((1 - Math.sqrt(1 / 2)) / (1 + Math.sqrt(1 / 2))); - overlay.path.segments[0].point = overlay.path.segments[0].point.add(trBottom); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(trBottom); - } - if (moveTopSize || moveBottomSize) { - translationY = translationY.multiply(0.5); - overlay.path.segments[5].point = overlay.path.segments[5].point.add(translationY); - overlay.path.segments[9].point = overlay.path.segments[9].point.add(translationY); - } - if (moveRightSize) { - overlay.path.segments[5].point = overlay.path.segments[5].point.add(translationX); - var trRight = translationX.clone(); - trRight = trRight.multiply((1 + Math.sqrt(1 / 2)) / 2); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(trRight); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(trRight); - trRight = trRight.multiply((1 - Math.sqrt(1 / 2)) / (1 + Math.sqrt(1 / 2))); - overlay.path.segments[0].point = overlay.path.segments[0].point.add(trRight); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(trRight); - } - if (moveLeftSize) { - overlay.path.segments[9].point = overlay.path.segments[9].point.add(translationX); - var trLeft = translationX.clone(); - trLeft = trLeft.multiply((1 + Math.sqrt(1 / 2)) / 2); - overlay.path.segments[0].point = overlay.path.segments[0].point.add(trLeft); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(trLeft); - trLeft = trLeft.multiply((1 - Math.sqrt(1 / 2)) / (1 + Math.sqrt(1 / 2))); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(trLeft); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(trLeft); - } - if (moveRightSize || moveLeftSize) { - translationX = translationX.multiply(0.5); - overlay.path.data.rotationIcon.translateByPoint(translationX); - overlay.path.data.deleteIcon.translateByPoint(translationX); - overlay.path.segments[1].point = overlay.path.segments[1].point.add(translationX); - overlay.path.segments[2].point = overlay.path.segments[2].point.add(translationX); - overlay.path.segments[3].point = overlay.path.segments[3].point.add(translationX); - overlay.path.segments[7].point = overlay.path.segments[7].point.add(translationX); - } - var point = overlay.path.segments[2].point.clone(); - point = point.add(overlay.path.segments[2].handleOut); - if (overlay.path.contains(point)) { - overlay.path.segments[2].handleOut = overlay.path.segments[2].handleOut.rotate(180, overlay.path.segments[2]); - //overlay.path.data.rotationIcon.translateByPoint(overlay.path.segments[2].handleOut.multiply(2)); - } - - if(overlay.path.contains(overlay.path.data.deleteIcon.getItem().position)){ - overlay.path.data.deleteIcon.rotate(180,overlay.path.data.deleteIcon.getData('pivot')); - overlay.path.data.deleteIcon.rotate(180); - } - - if(overlay.path.contains(overlay.path.data.rotationIcon.getItem().position)){ - overlay.path.data.rotationIcon.rotate(180,overlay.path.data.rotationIcon.getData('pivot')); - overlay.path.data.rotationIcon.rotate(180); - } - - if (overlay.path.segments.length > 10) { - overlay.path.removeSegment(10); - } - overlay.path.smooth({from: -7, to: 1}); - } - }, - - onMouseMove: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if(hitResult && hitResult.item._name.toString().indexOf(this.idPrefix)!==-1){ - if(!overlay.disabled && overlay.hoveredPath && hitResult.item._name.toString().indexOf(overlay.hoveredPath._name.toString()) !==-1){ - this.setCursor(hitResult,overlay); - } - } - }, - - - setCursor:function(hitResult,overlay){ - - if(hitResult.type === 'stroke' || hitResult.type === 'handle-in' || hitResult.type === 'handle-out'){ - jQuery(overlay.viewer.canvas).css('cursor','move'); - return; - } - - // mouse over attached icon - if(hitResult.type === 'pixel'){ - jQuery(overlay.viewer.canvas).css('cursor', 'pointer'); - return; - } - - if(hitResult.segment){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - } - - }, - - onMouseDown: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if (hitResult && hitResult.item._name.toString().indexOf(this.idPrefix) != -1) { - if (overlay.mode != 'deform' && overlay.mode != 'translate' && overlay.mode != 'create') { - - if (hitResult.item._name.toString().indexOf(this.partOfPrefix) !== -1) { - hitResult.item.data.self.onMouseDown(); - if(overlay.mode === 'rotate'){ - overlay.path = hitResult.item.data.self.getItem().data.parent; - } - return; - } - - if (hitResult.type === 'segment') { - overlay.mode = 'deform'; - overlay.segment = null; - overlay.path = null; - this.setCursor(hitResult, overlay); - } - - if (hitResult.type === 'stroke' || hitResult.type === 'handle-in' || hitResult.type === 'handle-out') { - overlay.mode = 'translate'; - overlay.segment = null; - overlay.path = null; - } - } - } - - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.segment = null; - overlay.path = null; - overlay.mode = ''; - } else { - overlay.path = hitResult.item; - } - return; - } - - if (overlay.mode === 'deform') { - if (overlay.path) { - overlay.segment = null; - overlay.path = null; - overlay.mode = ''; - } else { - overlay.path = hitResult.item; - overlay.segment = hitResult.segment; - } - return; - } - overlay.path = this.createShape(event.point, overlay); - }, - - onDoubleClick: function(event, overlay) { - // Empty block. - } - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-freehand.js b/js/src/annotations/osd-svg-freehand.js deleted file mode 100644 index 571a50a3fee771f79afe559885f59f570eb0ae4b..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-freehand.js +++ /dev/null @@ -1,256 +0,0 @@ -(function($) { - $.Freehand = function(options) { - jQuery.extend(this, { - name: 'Freehand', - logoClass: 'gesture', - idPrefix: 'smooth_path_', - tooltip: 'freehandTooltip' - }, options); - - this.init(); - }; - - $.Freehand.prototype = { - init: function() { - }, - - createShape: function(initialPoint, overlay) { - overlay.mode = 'create'; - var _this = this; - var shape = new overlay.paperScope.Path({ - segments: [initialPoint], - dashArray: overlay.dashArray, - strokeColor: overlay.strokeColor, - name: overlay.getName(_this) - }); - shape.data.strokeWidth = overlay.strokeWidth; - shape.strokeWidth = shape.data.strokeWidth / overlay.paperScope.view.zoom; - return shape; - }, - - updateSelection: function(selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) !== -1) { - - item.selected = selected; - - if(selected){ - if (!item.data.deleteIcon) { - item.data.deleteIcon = new overlay.annotationUtils.DeleteActionIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'delete', - fillColor:item.selectedColor - }); - item.data.deleteIcon.addData('pivot',new overlay.paperScope.Point(this.getPivotPointForDeleteIcon(item))); - item.data.deleteIcon.addData('type', 'deleteIcon'); - item.data.deleteIcon.addData('self', item.data.deleteIcon); - item.data.deleteIcon.addData('parent', item); - - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.deleteIcon.setOnMouseDownListener(overlay); - } - }else{ - - if(item.data.deleteIcon){ - item.data.deleteIcon.remove(); - item.data.deleteIcon = null; - } - } - } - }, - - onResize:function(item,overlay){ - if(item._name.toString().indexOf(this.partOfPrefix)!== -1){ - if(item._name.toString().indexOf('delete') !==-1){ - - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.self.resize(24 * 1 / overlay.paperScope.view.zoom); - } - } - }, - - - getPivotPointForDeleteIcon:function(item){ - var points = []; - - for(var i=0;i<item.segments.length;i++){ - points.push(item.segments[i].point); - } - - return { - x:this.getGeometricCenterOfPoints(points).x, - y:this.getLowestPoint(points).y - }; - }, - - getLowestPoint: function (points) { - var lx = 0; - var ly = 0; - - for (var i = 0; i < points.length; i++) { - lx = Math.max(lx, points[i].x); - ly = Math.max(ly, points[i].y); - } - - return { - x: lx, - y: ly - }; - }, - - getGeometricCenterOfPoints: function (points) { - var cx = 0; - var cy = 0; - for(var i= 0;i<points.length;i++){ - cx +=points[i].x; - cy +=points[i].y; - } - - return { - x:cx/points.length, - y:cy/points.length - }; - }, - - onHover:function(activate,shape,hoverWidth,hoverColor){ - shape.strokeWidth = hoverWidth; - - // shape needs to have hovered styles - if(activate && !shape.data.hovered){ - shape.data.nonHoverStrokeColor = shape.strokeColor.clone(); - shape.data.hovered = true; - shape.strokeColor = hoverColor; - } - // shape is not longer hovered - if(!activate && shape.data.hovered){ - shape.strokeColor = shape.data.nonHoverStrokeColor.clone(); - delete shape.data.nonHoverStrokeColor; - delete shape.data.hovered; - } - }, - - onMouseUp: function(event, overlay) { - - if(overlay.mode === 'create'){ - if (overlay.path) { - overlay.path.simplify(); - overlay.onDrawFinish(); - } - } - }, - - onMouseDrag: function(event, overlay) { - if (overlay.mode === 'deform') { - if (overlay.segment) { - overlay.segment.point.x += event.delta.x; - overlay.segment.point.y += event.delta.y; - overlay.path.smooth(); - - var path = overlay.segment.path; - path.data.deleteIcon.addData('pivot',new overlay.paperScope.Point(this.getPivotPointForDeleteIcon(path))); - path.data.deleteIcon.setPosition(path.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - - } - - return; - } - - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.path.position.x += event.delta.x; - overlay.path.position.y += event.delta.y; - if (overlay.path.data.deleteIcon) { - overlay.path.data.deleteIcon.translateByXY(event.delta.x, event.delta.y); - } - } - return; - } - - if (overlay.mode === 'create') { - overlay.path.add(event.point); - - if(overlay.path.data.deleteIcon){ - overlay.path.data.deleteIcon.addData('pivot',new overlay.paperScope.Point(this.getPivotPointForDeleteIcon(overlay.path))); - overlay.path.data.deleteIcon.setPosition(overlay.path.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - } - } - }, - - onMouseMove: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if(hitResult && hitResult.item._name.toString().indexOf(this.idPrefix)!==-1){ - if(!overlay.disabled && overlay.hoveredPath && hitResult.item._name.toString().indexOf(overlay.hoveredPath._name.toString()) !==-1){ - this.setCursor(hitResult,overlay); - } - } - }, - - setCursor:function(hitResult,overlay){ - if(hitResult.type === 'stroke'){ - jQuery(overlay.viewer.canvas).css('cursor','move'); - return; - } - if(hitResult.type === 'handle-in' || hitResult.type === 'handle-out'){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - return; - } - - // mouse over attached icon - if(hitResult.type === 'pixel'){ - jQuery(overlay.viewer.canvas).css('cursor', 'pointer'); - return; - } - - if(hitResult.segment){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - } - - }, - - onMouseDown: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if (hitResult && hitResult.item._name.toString().indexOf(this.idPrefix) != -1) { - if (hitResult.item._name.toString().indexOf(this.partOfPrefix) !== -1) { - hitResult.item.data.self.onMouseDown(); - return; - } - - if (overlay.mode !== 'create') { - - if (hitResult.type === 'stroke') { - overlay.mode = 'translate'; - overlay.path = hitResult.item; - return; - } - - if (hitResult.type === 'segment' || hitResult.type === 'handle-out' || hitResult.type === 'handle-in') { - // When shift is being pressed and segment point selected it deletes - if(event.modifiers.shift){ - if(hitResult.item.segments.length > 2){ - hitResult.segment.remove(); - return; - } - - } - overlay.mode = 'deform'; - overlay.segment = hitResult.segment; - overlay.path = hitResult.item; - return; - } - } - } else { - if(overlay.mode !=='create'){ - overlay.mode = ''; - } - } - - - if (overlay.mode === '') { - overlay.path = this.createShape(event.point, overlay); - return; - } - }, - - onDoubleClick: function(event, overlay) { - // Empty block. - } - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-overlay.js b/js/src/annotations/osd-svg-overlay.js deleted file mode 100644 index 336d48e4607cdfc1b6cbb08c3e723b4ce6ce943e..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-overlay.js +++ /dev/null @@ -1,1151 +0,0 @@ -(function($) { - $.getTools = function(options) { - if (this.svgOverlayTools) { - return this.svgOverlayTools; - } - options.partOfPrefix = '_partOf'; - this.svgOverlayTools = [new $.Rectangle(options), new $.Freehand(options), new $.Polygon(options), new $.Ellipse(options), new $.Pin(options)]; - return this.svgOverlayTools; - }; - - OpenSeadragon.Viewer.prototype.svgOverlay = function(osdViewerId, windowId, state, eventEmitter) { - return new $.Overlay(this, osdViewerId, windowId, state, eventEmitter); - }; - - // Wat? TODO:... - var FILL_COLOR_ALPHA_WORKAROUND = 0.00001; - - $.Overlay = function(viewer, osdViewerId, windowId, state, eventEmitter) { - var drawingToolsSettings = state.getStateProperty('drawingToolsSettings'); - this.drawingToolsSettings = drawingToolsSettings; - var availableAnnotationDrawingTools = state.getStateProperty('availableAnnotationDrawingTools'); - var availableExternalCommentsPanel = state.getStateProperty('availableExternalCommentsPanel'); - jQuery.extend(this, { - disabled: true, - inEditOrCreateMode: false, - osdViewerId: osdViewerId, - windowId: windowId, - commentPanel: null, - mode: '', // Possible modes: 'create', 'translate', 'deform','rotate', 'edit' and '' as default. - draftPaths: [], - editedPaths: [], - hoveredPath: null, - path: null, - segment: null, - latestMouseDownTime: -1, - doubleClickReactionTime: drawingToolsSettings.doubleClickReactionTime, - availableAnnotationDrawingTools: availableAnnotationDrawingTools, - availableExternalCommentsPanel: availableExternalCommentsPanel, - dashArray: [], - strokeWidth: 1, - fixedShapeSize: drawingToolsSettings.fixedShapeSize, - selectedColor: drawingToolsSettings.selectedColor || '#004c66', - shapeHandleSize:drawingToolsSettings.shapeHandleSize, - partOfPrefix:'_partOf', - hitOptions: { - handles: true, - stroke: true, - segments: true, - tolerance: 5 - } - }); - - this.tools = $.getTools(drawingToolsSettings); - this.currentTool = null; - // Default colors. - this.dashArray = []; - this.strokeWidth = 1; - this.strokeColor = drawingToolsSettings.strokeColor; - this.fillColor = drawingToolsSettings.fillColor; - this.fillColorAlpha = drawingToolsSettings.fillColorAlpha; - this.viewer = viewer; - this.canvas = document.createElement('canvas'); - // workaround to remove focus from editor - jQuery(this.canvas).attr('tabindex', '0').mousedown(function(){ jQuery(this).focus();}); - this.canvas.id = 'draw_canvas_' + this.windowId; - // Drawing of overlay border during development. - // this.canvas.style.border = '1px solid yellow'; - this.viewer.canvas.appendChild(this.canvas); - - var _this = this; - this.slotWindowElement = state.getWindowElement(this.windowId); - this.state = state; - this.eventEmitter = eventEmitter; - this.eventsSubscriptions = []; - - this.horizontallyFlipped = false; - - this.resize(); - this.show(); - this.init(); - }; - - $.Overlay.prototype = { - init: function() { - // Initialization of Paper.js overlay. - var _this = this; - this.lastAngle = 0; - this.paperScope = new paper.PaperScope(); - this.paperScope.setup('draw_canvas_' + _this.windowId); - this.paperScope.activate(); - this.paperScope.project.options.handleSize = _this.state.getStateProperty('shapeHandleSize'); - jQuery(_this.canvas).attr('keepalive', 'true'); - this.annotationUtils = new $.AnnotationUtils(); - this.paperScope.view.onFrame = function(event) { - if (_this.paperScope.snapPoint) { - _this.paperScope.snapPoint.remove(); - _this.paperScope.snapPoint = null; - } - if (_this.path && !_this.path.closed && _this.cursorLocation && _this.currentTool && _this.currentTool.idPrefix.indexOf('rough_path_') != -1) { - var distanceToFirst = _this.path.segments[0].point.getDistance(_this.cursorLocation); - if (_this.path.segments.length > 1 && distanceToFirst < _this.hitOptions.tolerance) { - _this.paperScope.snapPoint = new _this.paperScope.Path.Circle({ - name: 'snapPoint', - center: _this.path.segments[0].point, - radius: _this.hitOptions.tolerance / _this.paperScope.view.zoom, - fillColor: _this.path.strokeColor, - strokeColor: _this.path.strokeColor, - strokeWidth: _this.path.strokeWidth - }); - } - } - }; - - // Key for saving mouse tool as data attribute - // TODO: It seems its main use is for destroy the old paperjs mouse tool - // when a new Overlay is instantiated. Maybe a better scheme can be - // devised in the future? - this.mouseToolKey = 'draw_canvas_' + _this.windowId; - - this.setMouseTool(); - this.listenForActions(); - }, - - /** - * Adds a Tool that handles mouse events for the paperjs scope. - */ - setMouseTool: function() { - this.removeMouseTool(); - this.paperScope.activate(); - - this.mouseTool = new this.paperScope.Tool(); - this.mouseTool.overlay = this; - this.mouseTool.onMouseUp = this.onMouseUp; - this.mouseTool.onMouseDrag = this.onMouseDrag; - this.mouseTool.onMouseMove = this.onMouseMove; - this.mouseTool.onMouseDown = this.onMouseDown; - this.mouseTool.onDoubleClick = this.onDoubleClick; - this.mouseTool.onKeyDown = function(event){}; - }, - - /** - * Removes the mouse Tool from the paperjs scope. - */ - removeMouseTool: function() { - if (this.mouseTool) { - this.mouseTool.remove(); - } - }, - - handleDeleteShapeEvent: function (event, shape) { - var _this = this; - new $.DialogBuilder(this.slotWindowElement).dialog({ - message: i18next.t('deleteShape'), - closeButton: false, - className: 'mirador-dialog', - buttons: { - 'no': { - label: i18next.t('no'), - className: 'btn-default', - callback: function() { - return; - } - }, - 'yes': { - label: i18next.t('yes'), - className: 'btn-primary', - callback: function() { - _this.deleteShape(shape); - } - } - } - }); - }, - - listenForActions: function() { - var _this = this; - - this._thisResize = function(){ - _this.resize(); - }; - this._thisRotate = function(event) { - _this.rotate(event); - _this.resize(); - }; - this.viewer.addHandler('animation', this._thisResize); - this.viewer.addHandler('open', this._thisResize); - this.viewer.addHandler('animation-finish', this._thisResize); - this.viewer.addHandler('update-viewport', this._thisResize); - this.viewer.addHandler('resize',this._thisResize); - this.viewer.addHandler('rotate', this._thisRotate); - this.viewer.addHandler('constrain',this._thisResize); - - this._thisDestroy = function(){ - _this.destroy(); - }; - - this.viewer.addHandler('close',this._thisDestroy); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe('DESTROY_EVENTS.'+this.windowId, function(event) { - _this.destroy(); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('toggleDrawingTool.' + _this.windowId, function(event, tool) { - //qtip code should NOT be here - if (_this.disabled) { - // jQuery('.qtip' + _this.windowId).qtip('hide'); - return; - } - // jQuery('#' + _this.osdViewerId).parents('.window').find('.qtip-viewer').hide(); - _this.currentTool = null; - _this.mode = ''; - for (var i = 0; i < _this.tools.length; i++) { - if (_this.tools[i].logoClass === tool) { - _this.currentTool = _this.tools[i]; - } - } - })); - - var _thisHandleDeleteShapeEvent = function(event,shape){ - _this.handleDeleteShapeEvent(event,shape); - }; - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('deleteShape.' + _this.windowId, _thisHandleDeleteShapeEvent)); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('changeBorderColor.' + _this.windowId, function(event, color) { - _this.strokeColor = color; - if (_this.hoveredPath) { - _this.hoveredPath.strokeColor = color; - _this.paperScope.view.draw(); - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('changeFillColor.' + _this.windowId, function(event, color, alpha) { - _this.fillColor = color; - if(alpha === 0){ - alpha = FILL_COLOR_ALPHA_WORKAROUND; - } - _this.fillColorAlpha = alpha; - if (_this.hoveredPath && _this.hoveredPath.closed) { - _this.hoveredPath.fillColor = color; - _this.hoveredPath.fillColor.alpha = alpha; - _this.paperScope.view.draw(); - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('toggleBorderType.' + _this.windowId, function (event, type) { - if (type == 'solid') { - _this.dashArray = []; - _this.strokeWidth = 1; - } else if (type == 'thick') { - _this.dashArray = []; - _this.strokeWidth = 3; - } else if (type == 'thickest') { - _this.dashArray = []; - _this.strokeWidth = 6; - } else if (type == 'dashed') { - _this.dashArray = [5, 5]; - _this.strokeWidth = 1; - } else if (type == 'dotdashed') { - _this.dashArray = [2, 5, 7, 5]; - _this.strokeWidth = 1; - } - if (_this.hoveredPath) { - _this.hoveredPath.dashArray = _this.dashArray; - _this.hoveredPath.strokeWidth = _this.strokeWidth; - _this.paperScope.view.draw(); - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('annotationEditSave.'+_this.windowId,function(event,oaAnno){ - var onAnnotationSaved = jQuery.Deferred(); - if (!_this.draftPaths.length) { - new $.DialogBuilder(_this.slotWindowElement).dialog({ - message: i18next.t('editModalSaveAnnotationWithNoShapesMsg'), - closeButton: false, - className: 'mirador-dialog', - buttons: { - success: { - label: i18next.t('editModalBtnSaveWithoutShapes'), - className: 'btn-success', - callback: function () { - oaAnno.on = { - "@type": "oa:SpecificResource", - "full": _this.state.getWindowObjectById(_this.windowId).canvasID - }; - //save to endpoint - _this.eventEmitter.publish('annotationUpdated.' + _this.windowId, [oaAnno]); - onAnnotationSaved.resolve(); - } - }, - danger: { - label: i18next.t('editModalBtnDeleteAnnotation'), - className: 'btn-danger', - callback: function () { - _this.eventEmitter.publish('annotationDeleted.' + _this.windowId, [oaAnno['@id']]); - onAnnotationSaved.resolve(); - } - }, - main: { - label: i18next.t('cancel'), - className: 'btn-default', - callback: function () { - onAnnotationSaved.reject(); - } - } - } - }); - } else { - var writeStrategy = new $.MiradorDualStrategy(); - writeStrategy.buildAnnotation({ - annotation: oaAnno, - window: _this.state.getWindowObjectById(_this.windowId), - overlay: _this - }); - //save to endpoint - _this.eventEmitter.publish('annotationUpdated.' + _this.windowId, [oaAnno]); - onAnnotationSaved.resolve(); - } - - jQuery.when(onAnnotationSaved.promise()).then(function(){ - _this.eventEmitter.publish('annotationEditSaveSuccessful.'+_this.windowId); - _this.eventEmitter.publish('SET_ANNOTATION_EDITING.' + _this.windowId, { - "annotationId" : oaAnno['@id'], - "isEditable" : false, - "tooltip" : _this - }); - // return to pointer mode - _this.inEditOrCreateMode = false; - _this.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + _this.windowId); - - },function(){ - // confirmation rejected don't do anything - }); - - - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('annotationEditCancel.'+_this.windowId,function(event,id){ - - _this.eventEmitter.publish('SET_ANNOTATION_EDITING.' + _this.windowId, { - "annotationId" : id, - "isEditable" : false, - "tooltip" : _this.annoTooltip // whats the point of this? maybe when we add confirm for cancel? - }); - _this.inEditOrCreateMode = false; - // return to pointer mode - _this.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' +_this.windowId); - - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('clearDraftPaths.'+_this.windowId,function(){ - _this.clearDraftData(); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('onAnnotationCreated.'+_this.windowId,function(event,oaAnno){ - //should remove the styles added for newly created annotation - for(var i=0;i<_this.draftPaths.length;i++){ - if(_this.draftPaths[i].data && _this.draftPaths[i].data.newlyCreated){ - _this.draftPaths[i].strokeWidth = _this.draftPaths[i].data.strokeWidth; // TODO: removed newlyCreatedStrokeFactor stuff here - delete _this.draftPaths[i].data.newlyCreated; - delete _this.draftPaths[i].data.newlyCreatedStrokeFactor; - } - } - - var writeStrategy = new $.MiradorDualStrategy(); - writeStrategy.buildAnnotation({ - annotation: oaAnno, - window: _this.state.getWindowObjectById(_this.windowId), - overlay: _this - }); - //save to endpoint - _this.eventEmitter.publish('annotationCreated.' + _this.windowId, [oaAnno, function() { - // stuff that needs to be called after the annotation has been created on the backend - // return to pointer mode - _this.inEditOrCreateMode = false; - _this.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + _this.windowId); - - //reenable viewer tooltips - _this.eventEmitter.publish('enableTooltips.' + _this.windowId); - - _this.clearDraftData(); - _this.annoTooltip = null; - _this.annoEditorVisible = false; - }]); - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('onAnnotationCreatedCanceled.'+_this.windowId,function(event,cancelCallback,immediate){ - var cancel = function(){ - _this.inEditOrCreateMode = false; - _this.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + _this.windowId); - - _this.clearDraftData(); - _this.annoTooltip = null; - _this.annoEditorVisible = false; - }; - if (!immediate) { - new $.DialogBuilder(_this.slotWindowElement).dialog({ - message: i18next.t('cancelAnnotation'), - closeButton: false, - className: 'mirador-dialog', - buttons: { - 'no': { - label: i18next.t('no'), - className: 'btn-default', - callback: function() { - return; - } - }, - 'yes': { - label: i18next.t('yes'), - className: 'btn-primary', - callback: function() { - cancel(); - if (cancelCallback) { - cancelCallback(); - } - } - } - } - }); - } else { - cancel(); - } - })); - - this.eventsSubscriptions.push(_this.eventEmitter.subscribe('onAnnotationDeleted.' + _this.windowId, function(event, id, callback) { - _this.inEditOrCreateMode = false; - _this.eventEmitter.publish('annotationDeleted.' + _this.windowId, [id]); - _this.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + _this.windowId); - if (callback) { - callback(); - } - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe('SET_OVERLAY_TOOLTIP.' + this.windowId, function(event, options) { - _this.annoTooltip = options.tooltip; - _this.annoEditorVisible = options.visible; - _this.draftPaths = options.paths; - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe('CANCEL_ACTIVE_ANNOTATIONS.' + this.windowId, function(event) { - //for now, don't worry about getting user confirmation, just cancel everything - _this.clearDraftData(); - _this.annoTooltip = null; - _this.annoEditorVisible = false; - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe("ANNOTATIONS_LIST_UPDATED",function(event,options){ - if(options.windowId) { - _this.eventEmitter.publish("refreshOverlay." + _this.windowId); - } - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe("enableManipulation",function(event, tool){ - if(tool === 'mirror') { - _this.horizontallyFlipped = true; - } - })); - - this.eventsSubscriptions.push(this.eventEmitter.subscribe("disableManipulation",function(event, tool){ - if(tool === 'mirror') { - _this.horizontallyFlipped = false; - } - })); - }, - - deleteShape:function(shape){ - - for(var i=0;i<this.draftPaths.length;i++){ - if(this.draftPaths[i]._name.toString() === shape._name.toString()){ - this.draftPaths.splice(i,1); - break; - } - } - this.removeFocus(); - shape.remove(); - }, - - getMousePositionInImage: function(mousePosition) { - var _this = this; - var originWindow = this.state.getWindowObjectById(this.windowId); - var currentCanvasModel = originWindow.canvases[originWindow.canvasID]; - - if (mousePosition.x < 0) { - mousePosition.x = 0; - } - if (mousePosition.x > currentCanvasModel.getBounds().width) { - mousePosition.x = currentCanvasModel.getBounds().width; - } - if (mousePosition.y < 0) { - mousePosition.y = 0; - } - if (mousePosition.y > currentCanvasModel.getBounds().height) { - mousePosition.y = currentCanvasModel.getBounds().height; - } - if (this.horizontallyFlipped) { - mousePosition.x = currentCanvasModel.getBounds().width - mousePosition.x; - } - return mousePosition; - }, - - adjustDeltaForShape: function(lastPoint, currentPoint, delta, bounds) { - var originWindow = this.state.getWindowObjectById(this.windowId); - var currentCanvasModel = originWindow.canvases[originWindow.canvasID]; - - //first check along x axis - if (lastPoint.x < currentPoint.x) { - //moving to the right, delta should be based on the right most edge - if (bounds.x + bounds.width > currentCanvasModel.getBounds().width) { - delta.x = currentCanvasModel.getBounds().width - (bounds.x + bounds.width); - } - } else { - //moving to the left, prevent it from going past the left edge. if it does, use the shapes x value as the delta - if (bounds.x < 0) { - delta.x = Math.abs(bounds.x); - } - } - if (this.horizontallyFlipped) { - delta.x = -delta.x; - } - - //check along y axis - if (lastPoint.y < currentPoint.y) { - // moving to the bottom - if (bounds.y + bounds.height > currentCanvasModel.getBounds().height) { - delta.y = currentCanvasModel.getBounds().height - (bounds.y + bounds.height); - } - } else { - //moving to the top - if (bounds.y < 0) { - delta.y = Math.abs(bounds.y); - } - } - - return delta; - }, - - onMouseUp: function(event) { - if (!this.overlay.disabled) { - event.stopPropagation(); - //jQuery(this.overlay.viewer.canvas).css('cursor','default'); - // if (this.overlay.mode === 'deform' || this.overlay.mode === 'edit') { - // this.overlay.segment = null; - // this.overlay.()) = null; - // } - // if (this.overlay.mode != 'create') { - // this.overlay.mode = ''; - // } - if (this.overlay.currentTool) { - //we may not currently have a tool if the user is in edit mode and didn't click on an editable shape - this.overlay.currentTool.onMouseUp(event, this.overlay); - } - } - }, - - onMouseDrag: function(event) { - if (!this.overlay.disabled) { - event.stopPropagation(); - if (this.overlay.currentTool) { - if (this.overlay.currentTool.name === 'Freehand' && this.overlay.mode === 'create') { - //freehand create needs to use mouse position because bounds are not accurate until shape is finished - event.point = this.overlay.getMousePositionInImage(event.point); - event.delta = event.point - event.lastPoint; - } else { - if(this.overlay.path){ - var bounds = this.overlay.path.bounds; - // we already have a shape, and we are moving it, need to account for that, rather than mouse position - event.delta = this.overlay.adjustDeltaForShape(event.lastPoint, event.point, event.delta, bounds); - } - } - //we may not currently have a tool if the user is in edit mode and didn't click on an editable shape - this.overlay.currentTool.onMouseDrag(event, this.overlay); - } - } else { - var absolutePoint = { - 'x': event.event.clientX, - 'y': event.event.clientY - }; - this.overlay.eventEmitter.publish('updateTooltips.' + this.overlay.windowId, [event.point, absolutePoint]); - } - this.overlay.paperScope.view.draw(); - }, - - onMouseMove: function(event) { - if (!this.overlay.disabled) { - //We are in drawing mode - if (this.overlay.paperScope.project.hitTest(event.point, this.overlay.hitOptions)) { - this.overlay.eventEmitter.publish('POINTER_CURSOR.' + this.overlay.windowId); - } else if (this.overlay.currentTool && !this.overlay.path) { - this.overlay.eventEmitter.publish('CROSSHAIR_CURSOR.' + this.overlay.windowId); - } else { - this.overlay.eventEmitter.publish('DEFAULT_CURSOR.' + this.overlay.windowId); - } - event.stopPropagation(); - if (this.overlay.currentTool) { - this.overlay.currentTool.onMouseMove(event, this.overlay); - } - } else { - var absolutePoint = { - 'x': event.event.clientX, - 'y': event.event.clientY - }; - this.overlay.eventEmitter.publish('updateTooltips.' + this.overlay.windowId, [event.point, absolutePoint]); - } - this.overlay.paperScope.view.draw(); - }, - - onMouseDown: function(event) { - if (this.overlay.disabled) { - return; - } - event.stopPropagation(); - var date = new Date(); - var time = date.getTime(); - if (time - this.overlay.latestMouseDownTime < this.overlay.doubleClickReactionTime) { - this.overlay.latestMouseDownTime = time; - this.onDoubleClick(event); - } else { - this.overlay.latestMouseDownTime = time; - var hitResult = this.overlay.paperScope.project.hitTest(event.point, this.overlay.hitOptions); - - if (this.overlay.mode !== 'create' && this.overlay.mode !=='') { - this.overlay.mode = ''; - this.overlay.currentTool = null; - } - - if (hitResult && this.overlay.mode !== 'create') { - - var overlayEditable = false; - if (typeof hitResult.item.data.editable !== 'undefined') { - overlayEditable = hitResult.item.data.editable; // TODO should remove this editable variable when persisting the svg (will reduce length of string/memory) - } - // if item is part of shape it is editable - // part of shape items only appear when the shape is selected - if (hitResult.item._name.toString().indexOf(this.overlay.partOfPrefix) !== -1) { - overlayEditable = true; - } - if (!overlayEditable) { - return; - } - - } - - if (hitResult && (!this.overlay.currentTool || (hitResult.item._name.toString().indexOf(this.overlay.currentTool.idPrefix) === -1 && this.overlay.mode === ''))) { - var prefix = hitResult.item._name.toString(); - prefix = prefix.substring(0, prefix.indexOf('_') + 1); - - // nasty workaround some names contain `_` inside their name - var longPrefix = hitResult.item._name.toString().split('_'); - - longPrefix = longPrefix[0] + '_' + longPrefix[1] + '_'; - - for (var j = 0; j < this.overlay.tools.length; j++) { - - if (this.overlay.tools[j].idPrefix === prefix || this.overlay.tools[j].idPrefix === longPrefix) { - this.overlay.eventEmitter.publish('toggleDrawingTool.' + this.overlay.windowId, this.overlay.tools[j].logoClass); - break; - } - } - } - - if (this.overlay.currentTool) { - this.overlay.eventEmitter.publish('HUD_REMOVE_CLASS.'+this.overlay.windowId, ['.hud-dropdown', 'hud-disabled']); - event.point = this.overlay.getMousePositionInImage(event.point); - this.overlay.currentTool.onMouseDown(event, this.overlay); - } - } - this.overlay.hover(); - this.overlay.paperScope.view.draw(); - }, - - onDoubleClick: function(event) { - - event.stopPropagation(); - if (this.overlay.currentTool) { - this.overlay.currentTool.onDoubleClick(event, this.overlay); - } - }, - - fitFixedSizeShapes: function(shape) { - shape.data.fixedSize = true; - - if (shape.name.toString().indexOf('pin_') != -1) { - var scale = 1 / shape.bounds.width; - scale *= this.fixedShapeSize / this.paperScope.view.zoom; - shape.scale(scale, shape.segments[0].point); - } - }, - - updateSelection: function(selected, item) { - - if(item && item._name){ - var shapeTool = this.getTool(item); - if(shapeTool){ - item.selectedColor = this.selectedColor; - shapeTool.updateSelection(selected, item, this); - } - } - }, - - rotate: function (event) { - if (this.paperScope && this.paperScope.view) { - this.paperScope.view._matrix.rotate(event.degrees-this.lastAngle, this.paperScope.view.center); - this.lastAngle = event.degrees; - } - }, - - resize: function() { - var _this = this; - var viewportBounds = this.viewer.viewport.getBounds(true); - // var originWindow = this.state.getWindowObjectById(this.windowId); - // if ( !originWindow.canvases ) { return; } // no-op if canvases are not initialised. - // var currentCanvasModel = originWindow.canvases[originWindow.canvasID]; - - /* in viewport coordinates */ - this.canvas.width = this.viewer.viewport.containerSize.x; - this.canvas.height = this.viewer.viewport.containerSize.y; - var transform = 'translate(0px,0px)'; - this.canvas.style.WebkitTransform = transform; - this.canvas.style.msTransform = transform; - this.canvas.style.transform = transform; - this.canvas.style.marginLeft = '0px'; - this.canvas.style.marginTop = '0px'; - if (this.paperScope && this.paperScope.view) { - this.paperScope.view.viewSize = new this.paperScope.Size(this.canvas.width, this.canvas.height); - this.paperScope.view.zoom = _this.canvas.width * this.viewer.viewport.getZoom(true); - this.paperScope.view.center = new this.paperScope.Size( - this.viewer.viewport.getCenter(true).x, - this.viewer.viewport.getCenter(true).y - ); - - this.paperScope.view.update(true); - var allItems = this.paperScope.project.getItems({ - name: /_/ - }); - for (var j = 0; j < allItems.length; j++) { - if (allItems[j].data.fixedSize) { - this.fitFixedSizeShapes(allItems[j]); - } - if(this.getTool(allItems[j]).onResize){ - this.getTool(allItems[j]).onResize(allItems[j],this); - } - allItems[j].strokeWidth = allItems[j].data.strokeWidth / this.paperScope.view.zoom; - if (allItems[j].style) { - allItems[j].style.strokeWidth = allItems[j].data.strokeWidth / this.paperScope.view.zoom; - } - } - } - }, - - hover: function() { - if(!this.currentTool){ - return; - } - - if (!this.currentTool && this.hoveredPath) { - this.updateSelection(false, this.hoveredPath); - this.hoveredPath = null; - } - - if (this.hoveredPath) { - - if (this.hoveredPath._name.toString().indexOf(this.currentTool.idPrefix) === -1) { - this.updateSelection(false, this.hoveredPath); - this.hoveredPath = null; - } - if (this.path && this.path._name.toString().indexOf(this.currentTool.idPrefix) !== -1 ) { - - //should make exception for the dynamically attached paths to shapes - if(this.currentTool.partOfPrefix && this.path._name.toString().indexOf(this.currentTool.partOfPrefix) !== -1){ - return; - } - - if (this.hoveredPath) { - if(this.hoveredPath._name.toString() === this.path._name.toString() ){ - return; - }else{ - this.updateSelection(false, this.hoveredPath); - } - - } - this.hoveredPath = this.path; - this.updateSelection(true, this.hoveredPath); - } - return; - - } - - if (this.path && this.path._name.toString().indexOf(this.currentTool.idPrefix) != -1) { - this.hoveredPath = this.path; - this.updateSelection(true, this.hoveredPath); - } - }, - - removeFocus: function() { - if (this.hoveredPath) { - this.updateSelection(false, this.hoveredPath); - this.hoveredPath = null; - } - if (this.path) { - this.updateSelection(false, this.path); - this.path = null; - } - }, - - restoreEditedShapes: function() { - this.editedPaths = []; - this.removeFocus(); - }, - - restoreDraftShapes: function() { - this.clearDraftData(); - this.removeFocus(); - }, - - // get the tool which controls given shape - getTool:function(shape){ - for(var i=0;i<this.tools.length;i++){ - if(shape.name.toString().indexOf(this.tools[i].idPrefix) !== -1){ - return this.tools[i]; - } - } - }, - - // replaces paper.js objects with the required properties only. - // 'shapes' coordinates are image coordiantes - replaceShape: function(shape, annotation) { - - //backward compatibility when changing shapes points - var shapeTool = this.getTool(shape); - if(shapeTool && shapeTool.SEGMENT_POINTS_COUNT && shapeTool.SEGMENT_POINTS_COUNT !== shape.segments.length){ - shapeTool.adaptSegments(shape,this); - } - - var cloned = new this.paperScope.Path({ - segments: shape.segments, - name: shape.name - }); - - cloned.data.strokeWidth = shape.data.strokeWidth || 1; - cloned.strokeWidth = cloned.data.strokeWidth / this.paperScope.view.zoom; - cloned.strokeColor = shape.strokeColor; - cloned.dashArray = shape.dashArray; - if (shape.fillColor) { - cloned.fillColor = shape.fillColor; - - // workaround for paper js fill hit test - if(shape.fillColor.alpha === 0){ - shape.fillColor.alpha = FILL_COLOR_ALPHA_WORKAROUND; - } - if (shape.fillColor.alpha) { - cloned.fillColor.alpha = shape.fillColor.alpha; - } - } - cloned.closed = shape.closed; - cloned.data.rotation = shape.data.rotation; - cloned.data.fixedSize = shape.data.fixedSize; - cloned.data.annotation = annotation; - if (cloned.data.fixedSize) { - this.fitFixedSizeShapes(cloned); - } - shape.remove(); - return cloned; - }, - - // creating shapes used for backward compatibility. - // shape coordinates are viewport coordinates. - createRectangle: function(shape, annotation) { - var paperItems = []; - var rect = new $.Rectangle(); - var initialPoint = { - 'x': shape.x, - 'y': shape.y - }; - var currentMode = this.mode; - var currentPath = this.path; - var strokeWidth = this.strokeWidth; - var strokeColor = this.strokeColor; - var fillColor = this.fillColor; - var fillColorAlpha = this.fillColorAlpha || FILL_COLOR_ALPHA_WORKAROUND; - this.strokeColor = this.state.getStateProperty('drawingToolsSettings').strokeColor; - this.fillColor = this.state.getStateProperty('drawingToolsSettings').fillColor; - this.fillColorAlpha = this.state.getStateProperty('drawingToolsSettings').fillColorAlpha || FILL_COLOR_ALPHA_WORKAROUND; - this.mode = 'create'; - this.path = rect.createShape(initialPoint, this); - var eventData = { - 'delta': { - 'x': shape.width, - 'y': shape.height - } - }; - rect.onMouseDrag(eventData, this); - paperItems.push(this.path); - paperItems[0].data.annotation = annotation; - this.updateSelection(false, paperItems[0]); - this.strokeColor = strokeColor; - this.strokeWidth = strokeWidth; - this.fillColor = fillColor; - this.fillColorAlpha = fillColorAlpha; - this.path = currentPath; - this.mode = currentMode; - return paperItems; - }, - - parseSVG: function(svg, annotation) { - var paperItems = []; - var svgParser = new DOMParser(); - var svgDOM = svgParser.parseFromString(svg, "text/xml"); - if (svgDOM.documentElement.nodeName == 'parsererror') { - return; // if svg is not valid XML structure - backward compatibility. - } - var svgTag = this.paperScope.project.importSVG(svg); - // removes SVG tag which is the root object of comment SVG segment. - var body = svgTag.removeChildren()[0]; - svgTag.remove(); - if (body.className == 'Group') { - // removes group tag which wraps the set of objects of comment SVG segment. - var items = body.removeChildren(); - for (var itemIdx = 0; itemIdx < items.length; itemIdx++) { - paperItems.push(this.replaceShape(items[itemIdx], annotation)); - } - body.remove(); - } else { - paperItems.push(this.replaceShape(body, annotation)); - } - this.paperScope.view.update(true); - return paperItems; - }, - - // Restore latest view before rendering. - restoreLastView: function(shapeArray) { - for (var i = 0; i < this.editedPaths.length; i++) { - for (var idx = 0; idx < shapeArray.length; idx++) { - if (shapeArray[idx].name == this.editedPaths[i].name) { - shapeArray[idx].segments = this.editedPaths[i].segments; - shapeArray[idx].name = this.editedPaths[i].name; - shapeArray[idx].strokeWidth = this.editedPaths[i].strokeWidth; // TODO: removed --> / this.paperScope.view.zoom; - shapeArray[idx].strokeColor = this.editedPaths[i].strokeColor; - shapeArray[idx].dashArray = this.editedPaths[i].dashArray; - if (this.editedPaths[i].fillColor) { - shapeArray[idx].fillColor = this.editedPaths[i].fillColor; - if (this.editedPaths[i].fillColor.alpha) { - shapeArray[idx].fillColor.alpha = this.editedPaths[i].fillColor.alpha; - } - } - if (this.editedPaths[i].style) { - shapeArray[idx].style = this.editedPaths[i].style; - shapeArray[idx].style.strokeWidth = shapeArray[idx].data.strokeWidth / this.paperScope.view.zoom; - } - shapeArray[idx].closed = this.editedPaths[i].closed; - shapeArray[idx].data.rotation = this.editedPaths[i].data.rotation; - shapeArray[idx].data.fixedSize = this.editedPaths[i].data.fixedSize; - shapeArray[idx].data.annotation = this.editedPaths[i].data.annotation; - if (shapeArray[idx].data.fixedSize) { - this.fitFixedSizeShapes(shapeArray[idx]); - } - } - } - } - }, - - deselectAll: function() { - if (this.paperScope && this.paperScope.view && this.paperScope.project) { - this.paperScope.project.deselectAll(); - this.paperScope.view.update(true); - this.destroyCommentPanel(); - } - }, - - hide: function() { - this.canvas.style.display = 'none'; - this.deselectAll(); - }, - - show: function() { - this.canvas.style.display = 'block'; - }, - - checkToRemoveFocus: function() { - this.currentTool = ''; - //if we are switching between editing and drawing, remove an old path - if (this.inEditOrCreateMode && this.path) { - this.removeFocus(); - } - }, - - disable: function() { - this.disabled = true; - this.inEditOrCreateMode = false; - this.eventEmitter.publish('enableTooltips.' + this.windowId); - this.deselectAll(); - }, - - enableEdit: function() { - this.disabled = false; - this.inEditOrCreateMode = true; - this.eventEmitter.publish('disableTooltips.' + this.windowId); - }, - - enable: function() { - this.disabled = false; - //this.inEditOrCreateMode = false; - this.eventEmitter.publish('disableTooltips.' + this.windowId); - }, - - refresh: function() { - this.paperScope.view.update(true); - }, - - destroyCommentPanel: function() { - this.eventEmitter.publish('removeTooltips.' + this.windowId); - jQuery(this.canvas).parents('.mirador-osd').qtip('destroy', true); - this.commentPanel = null; - }, - - getName: function(tool) { - return tool.idPrefix + $.genUUID(); - }, - - getSVGString: function(shapes) { - var svg = "<svg xmlns='http://www.w3.org/2000/svg'>"; - if (shapes.length > 1) { - svg += "<g>"; - for (var i = 0; i < shapes.length; i++) { - this.updateSelection(false,shapes[i]); - if (shapes[i].data.fixedSize) { - this.fitFixedSizeShapes(shapes[i]); - } - var anno = shapes[i].data.annotation; - shapes[i].data.annotation = null; - svg += shapes[i].exportSVG({ - "asString": true - }); - shapes[i].data.annotation = anno; - } - svg += "</g>"; - } else { - this.updateSelection(false,shapes[0]); - if (shapes[0].data.fixedSize) { - this.fitFixedSizeShapes(shapes[0]); - } - var annoSingle = shapes[0].data.annotation; - shapes[0].data.annotation = null; - svg += shapes[0].exportSVG({ - "asString": true - }); - shapes[0].data.annotation = annoSingle; - } - svg += "</svg>"; - return svg; - }, - - onDrawFinish: function() { - - var shape = this.path; - if (!shape) { - return; - } - this.inEditOrCreateMode = true; - if (this.hoveredPath) { - this.updateSelection(false, this.hoveredPath); - } - - // Set special style for newly created shapes - var newlyCreatedStrokeFactor = this.drawingToolsSettings.newlyCreatedShapeStrokeWidthFactor || 5; - shape.data.newlyCreatedStrokeFactor = newlyCreatedStrokeFactor; - shape.data.newlyCreated = true; - shape.strokeWidth = shape.data.strokeWidth * newlyCreatedStrokeFactor; - - this.hoveredPath = shape; - this.segment = null; - this.path = null; - this.mode = ''; - this.draftPaths.push(shape); - - shape.data.editable = true; - - this.updateSelection(true, this.hoveredPath); - if (typeof this.annoTooltip === 'undefined' || !this.annoTooltip) { - this.annoTooltip = new $.AnnotationTooltip({ - targetElement: jQuery(this.canvas).parents('.mirador-osd'), - state: this.state, - eventEmitter: this.eventEmitter, - windowId: this.windowId - }); - } - - if (this.availableExternalCommentsPanel) { - this.eventEmitter.publish('annotationShapeCreated.' + this.windowId, [this, shape]); - return; - } - var _this = this; - if (typeof this.annoEditorVisible === 'undefined' || !this.annoEditorVisible) { - this.annoTooltip.showEditor({ - annotation: {}, - onSaveClickCheck: function () { - return _this.draftPaths.length; - }, - onAnnotationCreated: function(oaAnno) { - _this.eventEmitter.publish('onAnnotationCreated.'+_this.windowId,[oaAnno]); - } - }); - _this.annoEditorVisible = true; - } - }, - - onEditFinish: function() { - var _this = this; - jQuery.each(this.draftPaths, function(index, value) { - if (_this.path.name === value.name) { - _this.draftPaths[index] = _this.path; - } - }); - }, - - clearDraftData: function() { - var _this = this; - for (var idx = 0; idx < _this.draftPaths.length; idx++) { - _this.updateSelection(false, this.draftPaths[idx]); - _this.draftPaths[idx].remove(); - } - _this.draftPaths = []; - if (_this.path) { - _this.path.remove(); - } - _this.paperScope.view.update(true); - _this.hoveredPath = null; - _this.segment = null; - _this.path = null; - _this.mode = ''; - }, - - // Should unsubscribe from all events - // Should have no references in order to be garbage collected - destroy:function(){ - var _this = this; - - this.eventsSubscriptions.forEach(function(event){ - _this.eventEmitter.unsubscribe(event.name,event.handler); - }); - - this.viewer.removeHandler('animation',this._thisResize); - this.viewer.removeHandler('open',this._thisResize); - this.viewer.removeHandler('animation-finish',this._thisResize); - this.viewer.removeHandler('update-viewport',this._thisResize); - this.viewer.removeHandler('resize',this._thisResize); - this.viewer.removeHandler('rotate',this._thisResize); - this.viewer.removeHandler('constrain',this._thisResize); - this.viewer.removeHandler('close',this._thisDestroy); - } - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-pin.js b/js/src/annotations/osd-svg-pin.js deleted file mode 100644 index 5be52978732cf40aa19cb70178a3381c20dae139..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-pin.js +++ /dev/null @@ -1,173 +0,0 @@ -(function($) { - $.Pin = function(options) { - jQuery.extend(this, { - name: 'Pin', - logoClass: 'room', - idPrefix: 'pin_', - tooltip: 'pinTooltip', - }, options); - - this.init(); - }; - - $.Pin.prototype = { - init: function() { - }, - - createShape: function(initialPoint, overlay) { - overlay.mode = 'create'; - var _this = this; - var size = overlay.fixedShapeSize; - var pathData = ''; - pathData += 'M' + initialPoint.x + ',' + initialPoint.y; - pathData += ' Q' + initialPoint.x + ',' + (initialPoint.y - size); - pathData += ' ' + (initialPoint.x + size) + ',' + (initialPoint.y - 2 * size); - pathData += ' A' + size + ',' + size + ' 0 1 0'; - pathData += ' ' + (initialPoint.x - size) + ',' + (initialPoint.y - 2 * size); - pathData += ' Q' + initialPoint.x + ',' + (initialPoint.y - size); - pathData += ' ' + initialPoint.x + ',' + initialPoint.y; - var shape = new overlay.paperScope.Path(pathData); - shape.name = overlay.getName(_this); - shape.dashArray = overlay.dashArray; - shape.data.strokeWidth = overlay.strokeWidth; - shape.strokeWidth = shape.data.strokeWidth / overlay.paperScope.view.zoom; - shape.strokeColor = overlay.strokeColor; - shape.fillColor = overlay.fillColor; - shape.fillColor.alpha = overlay.fillColorAlpha; - shape.closed = true; - overlay.fitFixedSizeShapes(shape); - return shape; - }, - - updateSelection: function(selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) !== -1) { - if (selected) { - item.strokeColor = overlay.selectedColor; - - if (!item.data.deleteIcon) { - item.data.deleteIcon = new overlay.annotationUtils.DeleteActionIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'delete', - fillColor : item.selectedColor - }); - - item.data.deleteIcon.addData('pivot', item.segments[0].point); - item.data.deleteIcon.addData('type', 'deleteIcon'); - item.data.deleteIcon.addData('self', item.data.deleteIcon); - item.data.deleteIcon.addData('parent', item); - - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.deleteIcon.setOnMouseDownListener(overlay); - - } - - } else { - item.strokeColor = overlay.strokeColor; - - if (item.data.deleteIcon) { - item.data.deleteIcon.remove(); - item.data.deleteIcon = null; - } - - } - } - }, - - onResize:function(item,overlay){ - if(item._name.toString().indexOf(this.partOfPrefix)!== -1){ - if(item._name.toString().indexOf('delete')){ - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.self.resize(24 * 1 / overlay.paperScope.view.zoom); - } - } - }, - - onHover:function(activate,shape,hoverWidth,hoverColor){ - shape.strokeWidth = hoverWidth; - // shape needs to have hovered styles - if(activate && !shape.data.hovered){ - shape.data.nonHoverStrokeColor = shape.strokeColor.clone(); - shape.data.hovered = true; - shape.strokeColor = hoverColor; - } - // shape is not longer hovered - if(!activate && shape.data.hovered){ - shape.strokeColor = shape.data.nonHoverStrokeColor.clone(); - delete shape.data.nonHoverStrokeColor; - delete shape.data.hovered; - } - }, - - onMouseUp: function(event, overlay) { - // Empty block. - }, - - onMouseDrag: function(event, overlay) { - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.path.position.x += event.delta.x; - overlay.path.position.y += event.delta.y; - if(overlay.path.data.deleteIcon){ - overlay.path.data.deleteIcon.translateByXY(event.delta.x,event.delta.y); - } - } - } - }, - - onMouseMove: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if(hitResult && hitResult.item._name.toString().indexOf(this.idPrefix)!==-1){ - if(!overlay.disabled && overlay.hoveredPath && hitResult.item._name.toString().indexOf(overlay.hoveredPath._name.toString()) !==-1){ - this.setCursor(hitResult,overlay); - } - } - }, - - setCursor:function(hitResult,overlay){ - if(hitResult.type === 'stroke' || hitResult.type === 'handle-in' || hitResult.type === 'handle-out' || hitResult.type === 'segment'){ - jQuery(overlay.viewer.canvas).css('cursor','move'); - return; - } - - // mouse over attached icon - if(hitResult.type === 'pixel'){ - jQuery(overlay.viewer.canvas).css('cursor', 'pointer'); - return; - } - }, - - onMouseDown: function (event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if (hitResult && hitResult.item._name.toString().indexOf(this.idPrefix) != -1) { - - if (hitResult.item._name.toString().indexOf(this.partOfPrefix) !== -1) { - hitResult.item.data.self.onMouseDown(); - return; - } - - if (overlay.mode !== 'translate') { - overlay.mode = 'translate'; - overlay.segment = null; - overlay.path = null; - } - } - - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.segment = null; - overlay.path = null; - overlay.mode = ''; - } else { - overlay.path = hitResult.item; - } - return; - } - - overlay.path = this.createShape(event.point, overlay); - overlay.onDrawFinish(); - }, - - onDoubleClick: function(event, overlay) { - // Empty block. - } - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-polygon.js b/js/src/annotations/osd-svg-polygon.js deleted file mode 100644 index 55e9c7ce1e285376a128420ca58b82e71eac0bf9..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-polygon.js +++ /dev/null @@ -1,270 +0,0 @@ -(function($) { - $.Polygon = function(options) { - jQuery.extend(this, { - name: 'Polygon', - logoClass: 'timeline', - idPrefix: 'rough_path_', - tooltip: 'polygonTooltip' - }, options); - - this.init(); - }; - - $.Polygon.prototype = { - init: function() { - }, - - createShape: function(initialPoint, overlay) { - overlay.mode = 'create'; - var _this = this; - var shape = new overlay.paperScope.Path({ - segments: [initialPoint], - dashArray: overlay.dashArray, - strokeColor: overlay.strokeColor, - name: overlay.getName(_this) - }); - shape.data.strokeWidth = overlay.strokeWidth; - shape.strokeWidth = shape.data.strokeWidth / overlay.paperScope.view.zoom; - return shape; - }, - - updateSelection: function(selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) != -1) { - item.selected = selected; - - if(selected){ - if (!item.data.deleteIcon && overlay.mode !=='create') { - item.data.deleteIcon = new overlay.annotationUtils.DeleteActionIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'delete', - fillColor:item.selectedColor - }); - item.data.deleteIcon.addData('pivot',new overlay.paperScope.Point(this.getPivotPointForDeleteIcon(item))); - item.data.deleteIcon.addData('type', 'deleteIcon'); - item.data.deleteIcon.addData('self', item.data.deleteIcon); - item.data.deleteIcon.addData('parent', item); - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.deleteIcon.setOnMouseDownListener(overlay); - } - }else{ - - if(item.data.deleteIcon){ - item.data.deleteIcon.remove(); - item.data.deleteIcon = null; - } - } - } - }, - - onResize:function(item,overlay){ - if(item._name.toString().indexOf(this.partOfPrefix)!== -1){ - if(item._name.toString().indexOf('delete') !==-1){ - - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - item.data.self.resize(24 * 1 / overlay.paperScope.view.zoom); - } - } - }, - - getPivotPointForDeleteIcon:function(item){ - var points = []; - - for(var i=0;i<item.segments.length;i++){ - points.push(item.segments[i].point); - } - - return { - x:this.getGeometricCenterOfPoints(points).x, - y:this.getLowestPoint(points).y - }; - }, - - getLowestPoint: function (points) { - var lx = 0; - var ly = 0; - - for (var i = 0; i < points.length; i++) { - lx = Math.max(lx, points[i].x); - ly = Math.max(ly, points[i].y); - } - - return { - x: lx, - y: ly - }; - }, - - getGeometricCenterOfPoints: function (points) { - var cx = 0; - var cy = 0; - for(var i= 0;i<points.length;i++){ - cx +=points[i].x; - cy +=points[i].y; - } - - return { - x:cx/points.length, - y:cy/points.length - }; - }, - - onHover:function(activate,shape,hoverWidth,hoverColor){ - shape.strokeWidth = hoverWidth; - - // shape needs to have hovered styles - if(activate && !shape.data.hovered){ - shape.data.nonHoverStrokeColor = shape.strokeColor.clone(); - shape.data.hovered = true; - shape.strokeColor = hoverColor; - } - // shape is not longer hovered - if(!activate && shape.data.hovered){ - shape.strokeColor = shape.data.nonHoverStrokeColor.clone(); - delete shape.data.nonHoverStrokeColor; - delete shape.data.hovered; - } - }, - - onMouseUp: function(event, overlay) { - - }, - - onMouseDrag: function(event, overlay) { - if (overlay.mode === 'deform') { - if (overlay.segment) { - overlay.segment.point.x += event.delta.x; - overlay.segment.point.y += event.delta.y; - - var path = overlay.segment.path; - - if(path.data.deleteIcon){ - path.data.deleteIcon.addData('pivot', new overlay.paperScope.Point(this.getPivotPointForDeleteIcon(path))); - path.data.deleteIcon.setPosition(path.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom))); - } - - return; - } - } - - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.path.position.x += event.delta.x; - overlay.path.position.y += event.delta.y; - if (overlay.path.data.deleteIcon) { - overlay.path.data.deleteIcon.translateByXY(event.delta.x, event.delta.y); - } - - } - } - }, - - onMouseMove: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if(hitResult && hitResult.item._name.toString().indexOf(this.idPrefix)!==-1){ - if(!overlay.disabled && overlay.hoveredPath && hitResult.item._name.toString().indexOf(overlay.hoveredPath._name.toString()) !==-1){ - this.setCursor(hitResult,overlay); - } - } - }, - - setCursor:function(hitResult,overlay){ - if(hitResult.type === 'stroke'){ - jQuery(overlay.viewer.canvas).css('cursor','move'); - return; - } - - if(hitResult.type === 'handle-in' || hitResult.type === 'handle-out'){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - return; - } - - // mouse over attached icon - if(hitResult.type === 'pixel'){ - jQuery(overlay.viewer.canvas).css('cursor', 'pointer'); - return; - } - - if(hitResult.segment){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - } - }, - - onMouseDown: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if (hitResult && hitResult.item._name.toString().indexOf(this.idPrefix) !== -1) { - - if (hitResult.item._name.toString().indexOf(this.partOfPrefix) !== -1) { - hitResult.item.data.self.onMouseDown(); - return; - } - - if (overlay.mode !== 'create') { - if (!overlay.path) { - overlay.mode = 'edit'; - overlay.segment = null; - overlay.path = null; - document.body.style.cursor = "move"; - } else { - - document.body.style.cursor = "default"; - } - - if (hitResult.type === 'stroke') { - overlay.mode = 'translate'; - overlay.path = hitResult.item; - return; - } - - if (hitResult.type === 'segment') { - // When shift is being pressed and segment point selected it deletes - if(event.modifiers.shift){ - if(hitResult.item.segments.length > 2){ - hitResult.segment.remove(); - return; - } - - } - overlay.mode = 'deform'; - overlay.segment = hitResult.segment; - overlay.path = hitResult.item; - return; - } - - - } - } else { - if(overlay.mode !=='create'){ - overlay.mode = ''; - } - } - - if (overlay.mode === '') { - overlay.path = this.createShape(event.point, overlay); - - return; - } - if (overlay.mode === 'create') { - overlay.path.add(event.point); - - return; - } - - }, - - onDoubleClick: function(event, overlay) { - if (overlay.mode === 'create') { - if (overlay.path && overlay.path.segments.length > 1) { - - if (overlay.path.segments[0].point.getDistance(overlay.path.segments[overlay.path.segments.length - 1].point) * overlay.paperScope.view.zoom < overlay.hitOptions.tolerance) { - overlay.path.closed = true; - overlay.path.fillColor = overlay.fillColor; - overlay.path.fillColor.alpha = overlay.fillColorAlpha; - overlay.path.segments[overlay.path.segments.length - 1].remove(); - } - overlay.onDrawFinish(); - } - - } - - } - }; -}(Mirador)); diff --git a/js/src/annotations/osd-svg-rectangle.js b/js/src/annotations/osd-svg-rectangle.js deleted file mode 100644 index 9fd28887ef80ffc6b65226f2edd40de372a0d9ec..0000000000000000000000000000000000000000 --- a/js/src/annotations/osd-svg-rectangle.js +++ /dev/null @@ -1,408 +0,0 @@ -(function($) { - $.Rectangle = function(options) { - jQuery.extend(this, { - name: 'Rectangle', - logoClass: 'check_box_outline_blank', - idPrefix: 'rectangle_', - tooltip: 'rectangleTooltip' - }, options); - this.init(); - }; - - $.Rectangle.prototype = { - init: function() { - this.SEGMENT_POINTS_COUNT = 9; - }, - - createShape: function(initialPoint, overlay) { - overlay.mode = 'create'; - var segments = this._createSegments(initialPoint, overlay); - var shape = new overlay.paperScope.Path({ - segments: segments, - fullySelected: true, - name: overlay.getName(this) - }); - shape.dashArray = overlay.dashArray; - shape.data.strokeWidth = overlay.strokeWidth; - shape.strokeWidth = shape.data.strokeWidth / overlay.paperScope.view.zoom; - shape.strokeColor = overlay.strokeColor; - shape.fillColor = overlay.fillColor; - shape.fillColor.alpha = overlay.fillColorAlpha; - shape.closed = true; - shape.data.rotation = 0; - overlay.segment = shape.segments[5]; - this.updateSelection(true, shape, overlay); - return shape; - }, - - _createSegments:function(initialPoint, overlay){ - var segments = []; - // point indexes - // 0 1&2 3 - // ┌ ─ ─ ─ ┐ - // 8 │ │ 4 - // └ ─ ─ ─ ┘ - // 7 6 5(initial point) - // points 1 & 2 are workaround used to draw rotation handle - segments.push(new overlay.paperScope.Point(initialPoint.x - 2, initialPoint.y - 2)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1, initialPoint.y - 2)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1, initialPoint.y - 2)); - segments.push(new overlay.paperScope.Point(initialPoint.x, initialPoint.y - 2)); - segments.push(new overlay.paperScope.Point(initialPoint.x, initialPoint.y - 1)); - segments.push(new overlay.paperScope.Point(initialPoint.x, initialPoint.y)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 1, initialPoint.y)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 2, initialPoint.y)); - segments.push(new overlay.paperScope.Point(initialPoint.x - 2, initialPoint.y - 1)); - - return segments; - }, - - updateSelection: function (selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) != -1) { - - if(item._name.toString().indexOf(this.partOfPrefix)!=-1){ - return; - } - - item.selected = selected; - if (selected) { - - //item.segments[1].handleOut = new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom); - // item.segments[1].handleOut = item.segments[1].handleOut.rotate(item.data.rotation, item.segments[1]); - - if (!item.data.deleteIcon) { - - item.data.deleteIcon = new overlay.annotationUtils.DeleteActionIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'delete', - fillColor: item.selectedColor - }); - - item.data.deleteIcon.addData('pivot',item.segments[6].point); - item.data.deleteIcon.addData('type', 'deleteIcon'); - item.data.deleteIcon.addData('self', item.data.deleteIcon); - item.data.deleteIcon.addData('parent', item); - - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - - item.data.deleteIcon.setOnMouseDownListener(overlay); - - } - - if (!item.data.rotationIcon) { - - item.data.rotationIcon = new overlay.annotationUtils.RotationIcon(overlay.paperScope, { - name: item.name + this.partOfPrefix + 'rotation', - fillColor: item.selectedColor - }); - - item.data.rotationIcon.addData('pivot',item.segments[1].point); - item.data.rotationIcon.addData('type', 'rotationIcon'); - item.data.rotationIcon.addData('self', item.data.rotationIcon); - item.data.rotationIcon.addData('parent', item); - - item.data.rotationIcon.setPosition(item.data.rotationIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - - item.data.rotationIcon.setOnMouseDownListener(overlay); - - } - - if (!item.data.group) { - item.data.group = new overlay.annotationUtils.Group(overlay.paperScope,[item,item.data.deleteIcon.getItem(),item.data.deleteIcon.getMask().getItem(),item.data.rotationIcon.getItem(),item.data.rotationIcon.getMask().getItem()]); - } - - var point = item.segments[1].point.clone(); - point = point.add(item.segments[1].handleOut); - - if (item.contains(point)) { - item.segments[1].handleOut = item.segments[1].handleOut.rotate(180, item.segments[1]); - } - - if(item.contains(item.data.deleteIcon.getItem().position)){ - item.data.deleteIcon.setPosition(item.data.deleteIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - item.data.deleteIcon.rotate(180,item.data.deleteIcon.getData('pivot')); - item.data.deleteIcon.rotate(180); - } - - if(item.contains(item.data.rotationIcon.getItem().position)){ - item.data.rotationIcon.setPosition(item.data.rotationIcon.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.rotation))); - item.data.rotationIcon.rotate(180,item.data.rotationIcon.getData('pivot')); - item.data.rotationIcon.rotate(180); - } - - item.segments[1].handleOut.selected = false; - } else { - - if(item.data.group){ - item.data.group.remove(); - item.data.group = null; - overlay.paperScope.project.activeLayer.addChild(item); - } - - if(item.data.deleteIcon){ - item.data.deleteIcon.remove(); - item.data.deleteIcon = null; - } - - if(item.data.rotationIcon){ - item.data.rotationIcon.remove(); - item.data.rotationIcon = null; - } - item.segments[1].handleOut = new overlay.paperScope.Point(0, 0); - } - } - }, - - onHover:function(activate,shape,hoverWidth,hoverColor){ - shape.strokeWidth = hoverWidth; - - // shape needs to have hovered styles - if(activate && !shape.data.hovered){ - shape.data.nonHoverStrokeColor = shape.strokeColor.clone(); - shape.data.hovered = true; - shape.strokeColor = hoverColor; - } - // shape is not longer hovered - if(!activate && shape.data.hovered){ - shape.strokeColor = shape.data.nonHoverStrokeColor.clone(); - delete shape.data.nonHoverStrokeColorColor; - delete shape.data.hovered; - } - }, - - // Old rectangle shapes does not have rotation handle point - // add it manually for old shapes - adaptSegments:function(shape,overlay){ - var handleSegment = shape.segments[1].clone(); - shape.segments.splice(1,0,handleSegment); - }, - - onMouseUp: function(event, overlay) { - if (overlay.mode === 'create' && overlay.path) { - overlay.onDrawFinish(); - } else if (overlay.mode === 'translate' || overlay.mode === 'deform' && overlay.path) { - overlay.onEditFinish(); - } - }, - - translate: function(event, overlay) { - for (var i = 0; i < overlay.path.segments.length; i++) { - overlay.path.segments[i].point.x += event.delta.x; - overlay.path.segments[i].point.y += event.delta.y; - } - overlay.path.data.rotationIcon.translateByXY(event.delta.x,event.delta.y); - overlay.path.data.deleteIcon.translateByXY(event.delta.x,event.delta.y); - }, - - rotate:function(event,overlay){ - var center = overlay.path.position; - var rotation = Math.atan2(event.point.y - center.y + event.delta.y, event.point.x - center.x + event.delta.x) - Math.atan2(event.point.y - center.y, event.point.x - center.x); - rotation = rotation * (180 / Math.PI); - - overlay.path.data.group.rotate(rotation,overlay.path.position); - - overlay.path.data.deleteIcon.rotate(-rotation); - overlay.path.data.rotationIcon.rotate(-rotation); - overlay.path.data.rotation += rotation; - }, - - onMouseDrag: function (event, overlay) { - if (overlay.mode == 'translate') { - this.translate(event, overlay); - return; - } - - if (overlay.mode === 'rotate') { - this.rotate(event, overlay); - return; - } - - if (overlay.mode == 'create' || overlay.mode == 'deform') { - var idx = -1; - for (var l = 0; l < overlay.path.segments.length; l++) { - if (overlay.path.segments[l] == overlay.segment) { - idx = l; - break; - } - } - - var translation = new overlay.paperScope.Point(event.delta.x, event.delta.y); - var rot = overlay.path.data.rotation; - translation = translation.rotate(-rot); - var translationX = new overlay.paperScope.Point(translation.x, 0); - translationX = translationX.rotate(rot); - var translationY = new overlay.paperScope.Point(0, translation.y); - translationY = translationY.rotate(rot); - var moveTopSize = idx === 0 || idx === 1 || idx === 2 || idx === 3; - var moveBottomSize = idx === 5 || idx === 6 || idx === 7; - var moveRightSize = idx === 3 || idx === 4 || idx === 5; - var moveLeftSize = idx === 0 || idx === 7 || idx === 8; - if (moveTopSize) { - overlay.path.data.rotationIcon.translateByPoint(translationY); - overlay.path.segments[0].point = overlay.path.segments[0].point.add(translationY); - overlay.path.segments[1].point = overlay.path.segments[1].point.add(translationY); - overlay.path.segments[2].point = overlay.path.segments[2].point.add(translationY); - overlay.path.segments[3].point = overlay.path.segments[3].point.add(translationY); - } - if (moveBottomSize) { - overlay.path.data.deleteIcon.translateByPoint(translationY); - - overlay.path.segments[5].point = overlay.path.segments[5].point.add(translationY); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(translationY); - overlay.path.segments[7].point = overlay.path.segments[7].point.add(translationY); - } - if (moveTopSize || moveBottomSize) { - translationY = translationY.multiply(0.5); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(translationY); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(translationY); - } - if (moveRightSize) { - overlay.path.segments[3].point = overlay.path.segments[3].point.add(translationX); - overlay.path.segments[4].point = overlay.path.segments[4].point.add(translationX); - overlay.path.segments[5].point = overlay.path.segments[5].point.add(translationX); - } - if (moveLeftSize) { - overlay.path.segments[0].point = overlay.path.segments[0].point.add(translationX); - overlay.path.segments[7].point = overlay.path.segments[7].point.add(translationX); - overlay.path.segments[8].point = overlay.path.segments[8].point.add(translationX); - } - if (moveRightSize || moveLeftSize) { - translationX = translationX.multiply(0.5); - overlay.path.data.rotationIcon.translateByPoint(translationX); - overlay.path.data.deleteIcon.translateByPoint(translationX); - - overlay.path.segments[1].point = overlay.path.segments[1].point.add(translationX); - overlay.path.segments[2].point = overlay.path.segments[2].point.add(translationX); - overlay.path.segments[6].point = overlay.path.segments[6].point.add(translationX); - } - var point = overlay.path.segments[1].point.clone(); - point = point.add(overlay.path.segments[1].handleOut); - if (overlay.path.contains(point)) { // TODO should delete this - overlay.path.segments[1].handleOut = overlay.path.segments[1].handleOut.rotate(180, overlay.path.segments[1]); - } - - if (overlay.path.contains(overlay.path.data.deleteIcon.getItem().position)) { - overlay.path.data.deleteIcon.rotate(180, overlay.path.data.deleteIcon.getData('pivot')); - overlay.path.data.deleteIcon.rotate(180); - } - - if (overlay.path.contains(overlay.path.data.rotationIcon.getItem().position)) { - overlay.path.data.rotationIcon.rotate(180, overlay.path.data.rotationIcon.getData('pivot')); - overlay.path.data.rotationIcon.rotate(180); - } - - } - }, - - onResize:function(item,overlay){ - if(item._name.toString().indexOf(this.partOfPrefix)!== -1){ - if(item._name.toString().indexOf('delete') !==-1){ - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.parent.data.rotation))); - - if(item.data.parent.contains(item.position)){ - item.data.self.rotate(180,item.data.self.getData('pivot')); - item.data.self.rotate(180); - } - - item.data.self.resize(24 * 1 / overlay.paperScope.view.zoom); - } - - if(item._name.toString().indexOf('rotation') !== -1){ - item.data.self.setPosition(item.data.self.getData('pivot').add(new overlay.paperScope.Point(0, 21 / overlay.paperScope.view.zoom).rotate(item.data.parent.data.rotation))); - - if(item.data.parent.contains(item.position)){ - item.data.self.rotate(180,item.data.self.getData('pivot')); - item.data.self.rotate(180); - } - - item.data.self.resize(16 * 1 / overlay.paperScope.view.zoom); - } - - } - }, - - onMouseMove: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if(hitResult && hitResult.item._name.toString().indexOf(this.idPrefix)!==-1){ - if(!overlay.disabled && overlay.hoveredPath && hitResult.item._name.toString().indexOf(overlay.hoveredPath._name.toString()) !==-1){ - this.setCursor(hitResult,overlay); - } - } - }, - - setCursor:function(hitResult,overlay){ - - if(hitResult.type === 'stroke'){ - jQuery(overlay.viewer.canvas).css('cursor','move'); - return; - } - - if(hitResult.type === 'pixel'){ - jQuery(overlay.viewer.canvas).css('cursor', 'pointer'); - return; - } - - if(hitResult.segment){ - jQuery(overlay.viewer.canvas).css('cursor','pointer'); - } - - }, - - onMouseDown: function(event, overlay) { - var hitResult = overlay.paperScope.project.hitTest(event.point, overlay.hitOptions); - if (hitResult && hitResult.item._name.toString().indexOf(this.idPrefix) != -1) { - if (overlay.mode !== 'deform' && overlay.mode !== 'translate' && overlay.mode !== 'create') { - if (hitResult.item._name.toString().indexOf(this.partOfPrefix) !== -1) { - hitResult.item.data.self.onMouseDown(); // TODO should check this for memory leak - if(overlay.mode === 'rotate'){ - overlay.path = hitResult.item.data.self.getItem().data.parent; - } - return; - } - - if (hitResult.type === 'segment') { - overlay.mode = 'deform'; - overlay.segment = null; - overlay.path = null; - this.setCursor(hitResult, overlay); - } - - if (hitResult.type === 'stroke') { - overlay.mode = 'translate'; - overlay.segment = null; - overlay.path = null; - } - } - } - - if (overlay.mode === 'translate') { - if (overlay.path) { - overlay.segment = null; - overlay.path = null; - overlay.mode = ''; - } else { - overlay.path = hitResult.item; - } - return; - } - - if (overlay.mode === 'deform') { - if (overlay.path) { - overlay.segment = null; - overlay.path = null; - overlay.mode = ''; - } else { - overlay.path = hitResult.item; - overlay.segment = hitResult.segment; - } - return; - } - overlay.path = this.createShape(event.point, overlay); - }, - - onDoubleClick: function(event, overlay) { - - } - - }; - -}(Mirador)); diff --git a/js/src/annotations/simpleASEndpoint.js b/js/src/annotations/simpleASEndpoint.js deleted file mode 100644 index 05bcf2af2a9dbb5063137853a192244944110ac8..0000000000000000000000000000000000000000 --- a/js/src/annotations/simpleASEndpoint.js +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Edited version of https://github.com/IIIF/mirador/blob/9e3c6bbb894e044d01ad51aae1b70309939de5a9/js/src/annotations/catchEndpoint.js - * This module tries to store the annotation as is in a RDF store but some fiddeling is required. - * Fidles are: - * - delete annotation fails if id has a / in it so have to send sanatised ids to mirador - * - mirador requires an endpoint variable in the annotation pointing to this class. - * - * Note: this endpoint doesn't currently support authentication, just returns allow all - * - * All Endpoints need to have at least the following: - * annotationsList - current list of OA Annotations - * dfd - Deferred Object - * init() - * search(uri) - * create(oaAnnotation, returnSuccess, returnError) - * update(oaAnnotation, returnSuccess, returnError) - * deleteAnnotation(annotationID, returnSuccess, returnError) (delete is a reserved word) - * - */ -(function ($){ - -$.SimpleASEndpoint = function (options) { - - jQuery.extend(this, { - token: null, - // prefix: 'annotation', /**/ - uri: null, - url: options.url, - dfd: null, - // OA list for Mirador use - annotationsList: [], - // internal list for module use to map id to URI - idMapper: {} - }, options); - - this.init(); - }; - - $.SimpleASEndpoint.prototype = { - // Any set up for this endpoint, and triggers a search of the URI passed to object - init: function () { - this.catchOptions = { - user: { - id: this.userid, - name: this.username - }, - permissions: { - 'read': [], - 'update': [this.userid], - 'delete': [this.userid], - 'admin': [this.userid] - } - }; - }, - - // Search endpoint for all annotations with a given URI - search: function (options, successCallback, errorCallback) { - var _this = this; - - this.annotationsList = []; // clear out current list - jQuery.ajax({ - url: _this.url + '/search', // this.prefix+ - cache: false, - type: 'GET', - dataType: 'json', - headers: { - // 'x-annotator-auth-token': this.token - }, - data: { - uri: options.uri, - APIKey: _this.APIKey, - media: 'image', - limit: 10000 - }, - - contentType: 'application/json; charset=utf-8', - success: function(data) { - _this.annotationsList = data; // gmr - jQuery.each(_this.annotationsList, function(index, value) { - // Swap out URI of anno to shorter ID - value.fullId = value['@id']; - value['@id'] = $.genUUID(); - _this.idMapper[value['@id']] = value.fullId; - value.endpoint = _this; - // Ensure on is an array - _this.fixOn(value); - }); - if (typeof successCallback === 'function') { - successCallback(data); - } else { - _this.dfd.resolve(true); - } - }, - error: function(xhr, statusText, err) { - if (typeof errorCallback === 'function') { - errorCallback(); - } else { - _this.dfd.reject(); - console.log('The request for annotations has caused an error for endpoint: ' + options.uri + ' due to ' + statusText); - } - } - - }); - }, - - fixOn: function (annotation) { - var oldOn; - if (annotation && annotation.on && !jQuery.isArray(annotation.on) && annotation.on.selector && annotation.on.selector.default) { - oldOn = annotation.on; - annotation.on = [oldOn]; - } - }, - - deleteAnnotation: function (annotationID, returnSuccess, returnError) { - var _this = this; - jQuery.ajax({ - url: _this.url + '/destroy?uri=' + encodeURIComponent(_this.idMapper[annotationID]) + '&APIKey=' + _this.APIKey, // this.prefix+ - type: 'DELETE', - dataType: 'json', - headers: { - // 'x-annotator-auth-token': this.token - }, - data: { - uri: annotationID, - }, - contentType: 'application/json; charset=utf-8', - success: function(data) { - if (typeof returnSuccess === 'function') { - returnSuccess(); - } - }, - error: function(xhr, statusText, err) { - if (typeof returnError === 'function') { - returnError(); - } else { - console.log('Failed to delete annotation ' + annotationID + ' due to ' + statusText); - } - } - - }); - }, - - update: function (oaAnnotation, returnSuccess, returnError) { - var annotation = oaAnnotation; - var _this = this; - // slashes don't work in JQuery.find which is used for delete - // so need to switch http:// id to full id and back again for delete. - var shortId = annotation['@id']; - var annotationID = annotation.fullId;// annotation['@id']; - annotation['@id'] = annotation.fullId; - delete annotation.fullId; - delete annotation.endpoint; - jQuery.ajax({ - url: _this.url + '/update?APIKey=' + _this.APIKey, // this.prefix+ - type: 'POST', - dataType: 'json', - headers: { - // 'x-annotator-auth-token': this.token - }, - data: JSON.stringify(annotation), - contentType: 'application/json; charset=utf-8', - success: function(data) { - _this.fixOn(data); - if (typeof returnSuccess === 'function') { - returnSuccess(data); - } - }, - error: function(xhr, statusText, err) { - if (typeof returnError === 'function') { - returnError(); - } else { - console.log('Failed to update annotation: ' + oaAnnotation['@id'] + ' due to ' + statusText); - } - } - }); - // this is what updates the viewer - annotation.endpoint = _this; - annotation.fullId = annotation['@id']; - annotation['@id'] = shortId; - }, - - create: function (oaAnnotation, returnSuccess, returnError) { - var annotation = oaAnnotation; - var _this = this; - - jQuery.ajax({ - url: _this.url + '/create?APIKey=' + _this.APIKey, // this.prefix+ - type: 'POST', - dataType: 'json', - headers: { - // 'x-annotator-auth-token': this.token - }, - data: JSON.stringify(annotation), - contentType: 'application/json; charset=utf-8', - success: function(data) { - data.fullId = data['@id']; - data['@id'] = $.genUUID(); - data.endpoint = _this; - _this.idMapper[data['@id']] = data.fullId; - _this.fixOn(data); - if (typeof returnSuccess === 'function') { - returnSuccess(data); - } - }, - error: function(xhr, statusText, err) { - if (typeof returnError === 'function') { - returnError(); - } else { - console.log('Failed to create annotation: ' + oaAnnotation['@id'] + ' due to ' + statusText); - } - } - }); - }, - - set: function (prop, value, options) { - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - }, - userAuthorize: function (action, annotation) { - return true; // allow all - } - }; -}(Mirador)); diff --git a/js/src/annotations/tinymce-annotation-editor.js b/js/src/annotations/tinymce-annotation-editor.js deleted file mode 100644 index 9dfee008b0b7264f1bf34ceef1da978a951fad19..0000000000000000000000000000000000000000 --- a/js/src/annotations/tinymce-annotation-editor.js +++ /dev/null @@ -1,156 +0,0 @@ -(function($){ - - $.TinyMCEAnnotationBodyEditor = function(options) { - - jQuery.extend(this, { - annotation: null, - windowId: null, - config: { - plugins: '', - toolbar: '', - tags: [] - } - }, options); - - this.init(); - }; - - $.TinyMCEAnnotationBodyEditor.prototype = { - init: function() { - var _this = this; - var annoText = "", - selectedTags = [], - tags = []; - if (!jQuery.isEmptyObject(_this.annotation)) { - if (jQuery.isArray(_this.annotation.resource)) { - jQuery.each(_this.annotation.resource, function(index, value) { - if (value['@type'] === "oa:Tag") { - selectedTags.push(value.chars); - } else { - annoText = value.chars; - } - }); - } else { - annoText = _this.annotation.resource.chars; - } - } - (this.config.tags || []).forEach(function(item) { - if (selectedTags.indexOf(item) < 0) { - tags.push(item); - } - }); - tags = tags.concat(selectedTags); - - this.editorMarkup = this.editorTemplate({ - content: annoText, - selectedTags : selectedTags, - tags: tags, - windowId : _this.windowId - }); - }, - - show: function(selector) { - this.editorContainer = jQuery(selector) - .prepend(this.editorMarkup); - tinymce.init({ - selector: selector + ' textarea', - plugins: this.config.plugins, - menubar: false, - statusbar: false, - toolbar_items_size: 'small', - toolbar: this.config.toolbar, - default_link_target:"_blank", - setup: function(editor) { - editor.on('init', function(args) { - tinymce.execCommand('mceFocus', false, args.target.id); - jQuery('.tags-editor').select2({ - tags: true, - placeholder: "Add tags here..." - // tokenSeparators: [',', ' '] // spaces for backward compatibility - }); - }); - } - }); - }, - - isDirty: function() { - return tinymce.activeEditor.isDirty(); - }, - - createAnnotation: function() { - var tags = this.editorContainer.find('.tags-editor').val(), - resourceText = tinymce.activeEditor.getContent(); - - var motivation = [], - resource = [], - on; - - if (tags && tags.length > 0) { - motivation.push("oa:tagging"); - jQuery.each(tags, function(index, value) { - resource.push({ - "@type": "oa:Tag", - "chars": value - }); - }); - } - motivation.push("oa:commenting"); - resource.push({ - "@type": "dctypes:Text", - "format": "text/html", - "chars": resourceText - }); - return { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": motivation, - "resource": resource - }; - }, - - updateAnnotation: function(oaAnno) { - var selectedTags = this.editorContainer.find('.tags-editor').val(), - resourceText = tinymce.activeEditor.getContent(); - - var motivation = [], - resource = []; - - //remove all tag-related content in annotation - oaAnno.motivation = jQuery.grep(oaAnno.motivation, function(value) { - return value !== "oa:tagging"; - }); - oaAnno.resource = jQuery.grep(oaAnno.resource, function(value) { - return value["@type"] !== "oa:Tag"; - }); - //re-add tagging if we have them - if (selectedTags.length > 0) { - oaAnno.motivation.push("oa:tagging"); - jQuery.each(selectedTags, function(index, value) { - oaAnno.resource.push({ - "@type": "oa:Tag", - "chars": value - }); - }); - } - jQuery.each(oaAnno.resource, function(index, value) { - if (value["@type"] === "dctypes:Text") { - value.chars = resourceText; - } - }); - }, - - editorTemplate: $.Handlebars.compile([ - '<textarea class="text-editor" placeholder="{{t "comments"}}…">{{#if content}}{{content}}{{/if}}</textarea>', - '<select id="tags-editor-{{windowId}}" class="tags-editor" multiple="true">{{#each tags}}', - '<option value="{{this}}" {{#ifContains ../selectedTags this }}selected="selected"{{/ifContains}}>{{this}}</option>', - '{{/each}}</select>' - ].join('')) - }; - - // Handlebars helper: Contains - // check if a value is contained in an array - $.Handlebars.registerHelper("ifContains", function( array, value, options ){ - array = ( array instanceof Array ) ? array : [array]; - return (array.indexOf(value) > -1) ? options.fn( this ) : ""; - }); -}(Mirador)); diff --git a/js/src/manifests/collection.js b/js/src/manifests/collection.js deleted file mode 100644 index 3b17c92d88f9bc105122c9f651de39ae707a2715..0000000000000000000000000000000000000000 --- a/js/src/manifests/collection.js +++ /dev/null @@ -1,135 +0,0 @@ -(function($){ - - // This is an analogue of the Manifest utility class, but for collections - $.Collection = function(collectionUri, location, collectionContent) { - if (collectionContent) { - jQuery.extend(true, this, { - jsonLd: null, - location: location, - uri: collectionUri, - request: null - }); - this.initFromCollectionContent(collectionContent); - } else { - jQuery.extend(true, this, { - jsonLd: null, - location: location, - uri: collectionUri, - request: null - }); - - this.init(collectionUri); - } - }; - - $.Collection.prototype = { - init: function(collectionUri) { - var _this = this; - this.request = jQuery.ajax({ - url: collectionUri, - dataType: 'json', - async: true - }); - - this.request.done(function(jsonLd) { - _this.jsonLd = jsonLd; - }); - }, - initFromCollectionContent: function (collectionContent) { - var _this = this; - this.request = jQuery.Deferred(); - this.request.done(function(jsonLd) { - _this.jsonLd = jsonLd; - }); - _this.request.resolve(collectionContent); // resolve immediately - }, - - // Get the IIIF API version of this collection - getVersion: function() { - var versionMap = { - 'http://www.shared-canvas.org/ns/context.json': '1', // is this valid? - 'http://iiif.io/api/presentation/1/context.json': '1', - 'http://iiif.io/api/presentation/2/context.json': '2', - 'http://iiif.io/api/presentation/2.1/context.json': '2.1' - }; - return versionMap[this.jsonLd['@context']]; - }, - - // Return a list of sub-manifest URIs contained in this collection - getManifestUris: function() { - // "manifests" key present - if (this.jsonLd.manifests) { - return jQuery.map(this.jsonLd.manifests, function(v, _) { - return v['@id']; - }); - } - // "members" key present, sift-out non-manifests - if (this.jsonLd.members) { - return jQuery.map(this.jsonLd.members, function(v, _) { - if (v['@type'] === 'sc:Manifest') { - return v['@id']; - } - }); - } - // Neither present - return []; - }, - - // Return a list of sub-manifest JSON blocks contained in this collection - getManifestBlocks: function() { - // "manifests" key present - if (this.jsonLd.manifests) { - return this.jsonLd.manifests; - } - // "members" key present, sift-out non-manifests - if (this.jsonLd.members) { - return jQuery.map(this.jsonLd.members, function(v, _) { - if (v['@type'] === 'sc:Manifest') { - return v; - } - }); - } - // Neither present - return []; - }, - - // Return a list of sub-collection URIs contained in this collection - getCollectionUris: function() { - // "collections" key present - if (this.jsonLd.collections) { - return jQuery.map(this.jsonLd.collections, function(v, _) { - return v['@id']; - }); - } - // "members" key present, sift-out non-collections - if (this.jsonLd.members) { - return jQuery.map(this.jsonLd.members, function(v, _) { - if (v['@type'] === 'sc:Collection') { - return v['@id']; - } - }); - } - // Neither present - return []; - }, - - // Return a list of sub-collection JSON blocks contained in this collection - getCollectionBlocks: function() { - // "collections" key present - if (this.jsonLd.collections) { - return this.jsonLd.collections; - } - // "members" key present, sift out non-collections - if (this.jsonLd.members) { - return jQuery.map(this.jsonLd.members, function(v, _) { - if (v['@type'] === 'sc:Collection') { - return v; - } - }); - } - // Neither present - return []; - } - }; - -}(Mirador)); diff --git a/js/src/manifests/manifest.js b/js/src/manifests/manifest.js deleted file mode 100644 index 228966e070c1fa88f7768b7ed9f1d8a33e0fcf3e..0000000000000000000000000000000000000000 --- a/js/src/manifests/manifest.js +++ /dev/null @@ -1,263 +0,0 @@ -(function($){ - - $.Manifest = function(manifestUri, location, manifestContent) { - if (manifestContent) { - jQuery.extend(true, this, { - jsonLd: null, - location: location, - uri: manifestUri, - request: null - }); - this.initFromManifestContent(manifestContent); - } else if (manifestUri.indexOf('info.json') !== -1) { - // The following is an ugly hack. We need to finish the - // Manifesto utility library. - // See: https://github.com/IIIF/manifesto - // - // If manifestUri is not a string, then - // it's an object, namely a light-weight - // dummy manifest wrapped around the - // contents of an an info.json response. - // - // The wrapper is still going to need these - // accessor methods. We can just set the - // jsonLd directly, and the request needs to - // be a jQuery deferred object that is completed - // immediately upon creation. This allows - // components listening for this request to finish - // to react immediately without having to be - // re-written. - jQuery.extend(true, this, { - jsonLd: null, - location: location, - uri: manifestUri, - request: null, - }); - - this.initFromInfoJson(manifestUri); - } else { - jQuery.extend(true, this, { - jsonLd: null, - location: location, - uri: manifestUri, - request: null - }); - - this.init(manifestUri); - } - }; - - $.Manifest.prototype = { - init: function(manifestUri) { - var _this = this; - this.request = jQuery.ajax({ - url: manifestUri, - dataType: 'json', - async: true - }); - - this.request.done(function(jsonLd) { - _this.jsonLd = jsonLd; - }); - }, - buildCanvasMap: function() { - var _this = this; - this.canvasMap = {}; - - if (this.getCanvases()) { - this.getCanvases().forEach(function(canvas) { - _this.canvasMap[canvas['@id']] = canvas; - }); - } - }, - initFromInfoJson: function(infoJsonUrl) { - var _this = this; - this.request = jQuery.ajax({ - url: infoJsonUrl, - dataType: 'json', - async: true - }); - this.request.done(function(jsonLd) { - _this.jsonLd = _this.generateInfoWrapper(jsonLd); - }); - }, - initFromManifestContent: function (manifestContent) { - var _this = this; - this.request = jQuery.Deferred(); - this.request.done(function(jsonLd) { - _this.jsonLd = jsonLd; - }); - _this.request.resolve(manifestContent); // resolve immediately - }, - getThumbnailForCanvas : function(canvas, width) { - var version = "1.1", - compliance = -1, - service, - thumbnailUrl; - - // Ensure width is an integer... - width = parseInt(width, 10); - - // Respecting the Model... - if (canvas.hasOwnProperty('thumbnail')) { - // use the thumbnail image, prefer via a service - if (typeof(canvas.thumbnail) == 'string') { - thumbnailUrl = canvas.thumbnail; - } else if (canvas.thumbnail.hasOwnProperty('service')) { - service = canvas.thumbnail.service; - if(service.hasOwnProperty('profile')) { - compliance = $.Iiif.getComplianceLevelFromProfile(service.profile); - } - if(compliance === 0){ - // don't change existing behaviour unless compliance is explicitly 0 - thumbnailUrl = canvas.thumbnail['@id']; - } else { - // Get the IIIF Image API via the @context - if (service.hasOwnProperty('@context')) { - version = $.Iiif.getVersionFromContext(service['@context']); - } - thumbnailUrl = $.Iiif.makeUriWithWidth(service['@id'], width, version); - } - } else { - thumbnailUrl = canvas.thumbnail['@id']; - } - } else { - // No thumbnail, use main image - var resource = canvas.images[0].resource; - service = resource['default'] ? resource['default'].service : resource.service; - if (service.hasOwnProperty('@context')) { - version = $.Iiif.getVersionFromContext(service['@context']); - } - thumbnailUrl = $.Iiif.makeUriWithWidth(service['@id'], width, version); - } - return thumbnailUrl; - }, - getVersion: function() { - var versionMap = { - 'http://www.shared-canvas.org/ns/context.json': '1', // is this valid? - 'http://iiif.io/api/presentation/1/context.json': '1', - 'http://iiif.io/api/presentation/2/context.json': '2', - 'http://iiif.io/api/presentation/2.1/context.json': '2.1' - }; - return versionMap[this.jsonLd['@context']]; - }, - getCanvases : function() { - var _this = this; - return _this.jsonLd.sequences && _this.jsonLd.sequences[0].canvases; - }, - getAnnotationsListUrls: function(canvasId) { - var _this = this; - var canvas = jQuery.grep(_this.getCanvases(), function(canvas, index) { - return canvas['@id'] === canvasId; - })[0], - annotationsListUrls = []; - - if (canvas && canvas.otherContent) { - for (var i = 0; i < canvas.otherContent.length; i++) { - annotationsListUrls.push(canvas.otherContent[i]['@id']); - } - } - return annotationsListUrls; - }, - getStructures: function() { - var _this = this; - return _this.jsonLd.structures; - }, - generateInfoWrapper: function(infoJson) { - // Takes in info.json and creates the - // dummy manifest wrapper around it - // that will allow it to behave like a - // manifest with one canvas in it, with - // one image on it. Some of the metadata - // of the image will be used as the - // label, and so on, of the manifest. - var dummyManifest = { - '@context': "http://www.shared-canvas.org/ns/context.json", - '@id': infoJson['@id'], - '@type': 'sc:Manifest', - label: infoJson['@id'].split('/')[infoJson['@id'].split('/').length -1], - sequences: [ - { - '@id': infoJson['@id'] + '/sequence/1', - '@type': 'sc:Sequence', - canvases: [ - { - '@id': infoJson['@id'] + '/sequence/1/canvas/1', - '@type': 'sc:Canvas', - width: infoJson.width, - height: infoJson.height, - images: [ - { - '@id': infoJson['@id'] + '/sequence/1/canvas/1/image/1', - '@type': 'sc:image', - 'motivation': 'sc:painting', - resource: { - '@id': infoJson, - '@type': "dctypes:Image", - format: "image/jpeg", - height: infoJson.height, - width: infoJson.width, - service: { - '@id': infoJson['@id'], - '@context': infoJson['@context'], - 'profile': infoJson.profile - } - } - } - ] - } - ] - } - ] - }; - - return dummyManifest; - }, - getSearchWithinService: function(){ - var _this = this; - var serviceProperty = _this.jsonLd.service; - var service = []; - if (serviceProperty === undefined){ - service = null; - } - else if (serviceProperty.constructor === Array){ - for (var i = 0; i < serviceProperty.length; i++){ - //TODO: should we be filtering search by context - if (serviceProperty[i]["@context"] === "http://iiif.io/api/search/0/context.json" || - serviceProperty[i]["@context"] === "http://iiif.io/api/search/1/context.json") { - //returns the first service object with the correct context - service.push(serviceProperty[i]); - } - } - } - else if (_this.jsonLd.service["@context"] === "http://iiif.io/api/search/0/context.json" || - serviceProperty["@context"] === "http://iiif.io/api/search/1/context.json"){ - service.push(_this.jsonLd.service); - } - else { - //no service object with the right context is found - service = null; - } - return service; - }, - - /** - * Get the label of the a canvas by ID - * @param {[type]} canvasId ID of desired canvas - * @return {[type]} string - */ - getCanvasLabel: function(canvasId) { - console.assert(canvasId && canvasId !== '', "No canvasId was specified."); - if (this.canvasMap && canvasId.indexOf('#') >= 0) { - var canvas = this.canvasMap[canvasId.split('#')[0]]; - return canvas ? canvas.label : undefined; - } - }, - getViewingDirection : function() { - var _this = this; - return _this.jsonLd.viewingDirection || _this.jsonLd.sequences[0].viewingDirection; - - } - }; - -}(Mirador)); diff --git a/js/src/mirador.js b/js/src/mirador.js deleted file mode 100644 index 3dce7d5e35df596cd91ce09f1b98fe1b628cf534..0000000000000000000000000000000000000000 --- a/js/src/mirador.js +++ /dev/null @@ -1,35 +0,0 @@ -// This file defines the global Mirador constructor function. -// This is the entry point to Mirador and is intentionally sparse. -(function(global) { - function checkContainer(containerId) { - var container = jQuery('#' + containerId); - if (!container.hasClass('mirador-container')) { - // Add necessary namespace class to the container element so that - // style definitions will be applied correctly - container.addClass('mirador-container'); - } - } - - function Mirador(config) { - if (this instanceof Mirador) { - checkContainer(config.id); - - // initialize the event emitter for this mirador instance - this.eventEmitter = new Mirador.EventEmitter(); - - // pass the config through the save and restore process, - // returning the config that will, in fact, populate the application - this.saveController = new Mirador.SaveController(jQuery.extend(true, {}, config, {'eventEmitter': this.eventEmitter})); - - // initialize the application - this.viewer = new Mirador.Viewer({ - 'state': this.saveController, - 'eventEmitter': this.eventEmitter - }); - return this; - } else { - return new Mirador(config); - } - } - global.Mirador = global.Mirador || Mirador; -})(window); diff --git a/js/src/settings.js b/js/src/settings.js deleted file mode 100644 index 0e5fc1d84a31c842489df2f9513494704647bedf..0000000000000000000000000000000000000000 --- a/js/src/settings.js +++ /dev/null @@ -1,234 +0,0 @@ -(function($) { - - /** - * Default values for settings - */ - $.DEFAULT_SETTINGS = { - - 'workspaceType': 'singleObject', - - 'saveSession' : false, //whether or not to store session to local storage - - 'workspaces' : { - 'singleObject': { - 'label': 'Single Object', - 'addNew': false, - 'move': false, - 'iconClass': 'image' - }, - 'compare': { - 'label': 'Compare', - 'iconClass': 'columns' - }, - 'bookReading': { - 'defaultWindowOptions': { - }, - 'label': 'Book Reading', - 'addNew': true, - 'move': false, - 'iconClass': 'book' - } - }, - - 'manifests' : [], - 'data' : [], - - 'layout': '1x1', - - 'openManifestsPage' : false, //defaults to false, whether or not Mirador should display the manifests page, - //only valid if no windowObjects have been initialized - //if there are multiple slots, it will be bound to the first slot and the selected manifest will open in that slot - - // whether or not to preserve the order of the manifests, as provided in the configuration, in the manifest listing page - 'preserveManifestOrder' : false, - - //default window settings, but can be changed in Mirador configuration on initialization - 'windowSettings' : { - "availableViews" : ['ThumbnailsView', 'ImageView', 'ScrollView', 'BookView'], //any subset removes others - "viewType" : 'ImageView', //one of [_'ThumbnailsView'_, 'ImageView', 'ScrollView', 'BookView'] - if using availableViews, must be in subset - "bottomPanel" : true, //whether or not to make the bottom panel available in this window - "bottomPanelVisible" : true, //whether or not to make the bottom panel visible in this window on load. This setting is dependent on bottomPanel being true - "sidePanel" : true, //whether or not to make the side panel available in this window - //control what is available in the side panel. if "sidePanel" is false, these options won't be applied - "sidePanelOptions" : { - "toc" : true, - "annotations" : false, - "tocTabAvailable": true, - "layersTabAvailable": false, - "searchTabAvailable": false, - "annotationTabAvailable": false - }, - "sidePanelVisible" : true, //whether or not to make the side panel visible in this window on load. This setting is dependent on sidePanel being true - "overlay" : true, //whether or not to make the metadata overlay available/visible in this window - "canvasControls": { // The types of controls available to be displayed on a canvas - "annotations" : { - "annotationLayer" : true, //whether or not to make annotation layer available in this window - "annotationCreation" : true, /*whether or not to make annotation creation available in this window, - only valid if annotationLayer is set to True and an annotationEndpoint is defined. - This setting does NOT affect whether or not a user can edit an individual annotation that has already been created.*/ - "annotationState" : 'off', //[_'off'_, 'on'] whether or not to turn on the annotation layer on window load - "annotationRefresh" : false, //whether or not to display the refresh icon for annotations - }, - "imageManipulation" : { - "manipulationLayer" : true, - "controls" : { - "rotate" : true, - "brightness" : true, - "contrast" : true, - "saturate" : true, - "grayscale" : true, - "invert" : true, - "mirror" : false - } - } - }, - "fullScreen" : true, //whether or not to make the window's fullScreen button visible to user - "displayLayout" : true, //whether or not to display all layout options, removing individual menu options is separate - //control individual menu items in layout menu. if "displayLayout" is false, these options won't be applied - "layoutOptions" : { - "newObject" : true, - "close" : true, - "slotRight" : true, - "slotLeft" : true, - "slotAbove" : true, - "slotBelow" : true, - } - }, - - 'windowObjects' : [ - /* Using the same settings listed in `windowSettings`, change the settings for a specific window - * Structured as an array of objects - * A few additional settings only available in `windowObjecs` - * "loadedManifest": [manifestURI] e.g. "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/manifest.json" - * "canvasID": [canvas URI] e.g. "http://dms-data.stanford.edu/data/manifests/Walters/qm670kv1873/canvas/canvas-12" - * "id" : [unique window ID - set by application and automatically saved in SaveController] - * "windowOptions" : [data specific to the view type, such as OSD bounds and zoom level - automatically saved in SaveController] - */ - ], - - // Control for whether or not to auto hide controls on the OSD canvas and specific durations in milliseconds - // durations assume `autoHideControls` is true - 'autoHideControls': true, - 'fadeDuration': 400, - 'timeoutDuration': 3000, - - 'availableAnnotationModes': [ - - ], - - 'availableAnnotationDrawingTools': [ - 'Rectangle', 'Ellipse', 'Freehand', 'Polygon', 'Pin' - ], - 'availableAnnotationStylePickers':[ - 'StrokeColor','FillColor','StrokeType' - ], - 'drawingToolsSettings': { - // Additional tool settings. - /** - *'Pin': { - *}, - **/ - //'selectedColor': 'red', - 'doubleClickReactionTime': 300, - 'strokeColor': 'deepSkyBlue', - 'fillColor': 'deepSkyBlue', - 'fillColorAlpha': 0.0, - 'shapeHandleSize':10, - 'fixedShapeSize':10, - 'newlyCreatedShapeStrokeWidthFactor':5, - 'hoverColor':'yellow' - }, - - 'availableExternalCommentsPanel': false, - 'shapeHandleSize':10, - - - 'availableCanvasTools': [ - - ], - - // main (top) menu - //we don't actually take the height into account for the mirador-viewer div, so don't use for now - 'mainMenuSettings': { - 'show': true, - 'buttons' : { - 'bookmark' : false, - 'layout' : true, - 'options' : false, - 'fullScreenViewer': true - } - //'height': 25, - //'width': '100%' - }, - - 'workspacePanelSettings': { - 'maxRows': 5, - 'maxColumns': 5, - 'preserveWindows': true - }, - - //true or false. controls display of "Add new object from URL" on manifest listing page - 'showAddFromURLBox' : true, - - 'buildPath' : 'build/mirador/', - - 'i18nPath' : 'locales/', - - 'imagesPath' : 'images/', - - /** - * Annotation backend that have instance-specific configuration data as a hash, e.g.: - * { - * name: 'backend name', - * module: 'NameEndpoint', - * options: - * { 'url': '', - * 'storeId': 123, - * 'APIKey': '23983hf98j3f9283jf2983fj' - * } - * } - **/ - 'annotationEndpoint': {}, - - 'annotationBodyEditor': { - 'module': 'TinyMCEAnnotationBodyEditor', - 'options': { - config: { - plugins: "image link media directionality", - toolbar: "bold italic | bullist numlist | link image media | removeformat | ltr rtl", - tags: [] - } - } - }, - - 'jsonStorageEndpoint': { - 'name': 'JSONBlob API Endpoint', - 'module': 'JSONBlobAPI', - 'options': { - 'ssl': true, - 'port': '443', - 'host': 'jsonblob.com' - } - }, - - 'manifestsPanel': { - 'name': 'Classic Mirador Manifests Panel', - 'module': 'ManifestsPanel', - 'options': { - } - }, - - 'sharingEndpoint': { - 'url': '', - 'storeId': 123, - 'APIKey': '23983hf98j3f9283jf2983fj' - }, - - // linked image views configuration - 'lockController' : { - 'lockProfile' : 'lazyZoom', - 'notifyMaxMin' : true - } - }; - -}(Mirador)); diff --git a/js/src/utils/dialog-builder.js b/js/src/utils/dialog-builder.js deleted file mode 100644 index 2edc2f13c44ef371155ba5ce9d181178f6f2b1d5..0000000000000000000000000000000000000000 --- a/js/src/utils/dialog-builder.js +++ /dev/null @@ -1,33 +0,0 @@ -(function ($) { - $.DialogBuilder = function (container) { - this.container = container || jQuery('.window'); - - bootbox.setDefaults({ - container: this.container - }); - }; - - $.DialogBuilder.prototype = { - confirm: function (message, callback) { - return this._attachEvents(bootbox.confirm(message, callback)); - }, - dialog: function(opts){ - this._attachEvents(bootbox.dialog(opts)); - }, - _attachEvents:function(el){ - var _this = this; - el.init(function(){ - // set bigger z-index that one used in qtip - var zIndex = 20000; - - jQuery(el).css('z-index',zIndex); - // workaround because bootstap does not support external configuration for backdrop parent - jQuery('.modal-backdrop').prependTo(_this.container).css('z-index',zIndex); - }); - jQuery(el).on('hidden.bs.modal',function(){ - jQuery('.modal-backdrop').remove(); - }); - } - }; - -})(Mirador); \ No newline at end of file diff --git a/js/src/utils/eventemitter.js b/js/src/utils/eventemitter.js deleted file mode 100644 index 1f16f82720e4e5708cc4483709a68bb2e35bf166..0000000000000000000000000000000000000000 --- a/js/src/utils/eventemitter.js +++ /dev/null @@ -1,109 +0,0 @@ -(function($) { - $.EventEmitter = function(config) { - jQuery.extend(true, this, { - 'debug': $.EventEmitter.debug, // Log events to console if true - 'trace': $.EventEmitter.trace, // Use console.trace for logging if true, console.log if false - 'debugExclude': $.EventEmitter.excludePatterns // substring patterns for event IDs to exclude - }, config); - this.emitterId = $.EventEmitter.nextId(); - if (this.debug) { - this.logger = new $.EventEmitter.Logger({ - trace: this.trace, - debugExclude: this.debugExclude - }); - } - }; - - $.EventEmitter.id = 0; - $.EventEmitter.nextId = function() { - $.EventEmitter.id++; - return $.EventEmitter.id; - }; - - /************************ - * BEGIN debug settings * - ************************/ - $.EventEmitter.debug = false; - $.EventEmitter.trace = false; - - // Event IDs that contains any substring in the array will be ignored by the logger - // e.g. ['updateTooltips', 'ANNO.*UPDATED'] - $.EventEmitter.excludePatterns = []; - - $.EventEmitter.Logger = function(options) { - this.trace = options.trace; - this.debugExclude = options.debugExclude; - this.scaffoldMap = {}; - }; - $.EventEmitter.Logger.prototype = { - log: function() { - if (this.trace) { - console.trace.apply(console, arguments); - } else { - console.log.apply(console, arguments); - } - }, - exclude: function(str) { - var patterns = this.debugExclude; - for (var i = 0; i < patterns.length; ++i) { - if (str.match(patterns[i])) { - return true; - } - } - return false; - }, - scaffoldHandler: function(eventId, handler) { - var _this = this; - var scaffold = function() { - _this.log("EventEmitter:handler:", eventId, handler, Array.prototype.slice.call(arguments)); - handler.apply(null, arguments); - }; - this.scaffoldMap[handler] = scaffold; - return scaffold; - }, - unscaffold: function(handler) { - var scaffold = this.scaffoldMap[handler]; - delete this.scaffoldMap[handler]; - return scaffold; - } - }; - /********************** - * END debug settings * - **********************/ - - ['subscribe', 'unsubscribe', 'publish'].forEach(function(action) { - $.EventEmitter.prototype[action] = function() { - var args = Array.prototype.slice.call(arguments); - var eventId = args[0]; - var globalEventId = this.emitterId.toString() + '::' + eventId; - var logging = this.logger && !this.logger.exclude(globalEventId); - var event; - - if (action === 'subscribe') { - event = { - name: eventId, - handler: args[1] - }; - if (logging) { - args[1] = this.logger.scaffoldHandler(globalEventId, args[1]); - } - } - - if (action === 'unsubscribe') { - if (logging) { - args[1] = this.logger.unscaffold(args[1]); - } - } - - args[0] = globalEventId; - if (logging) { - this.logger.log("EventEmitter:" + action + ":", args); - } - jQuery[action].apply(jQuery, args); - - if (event) { - return event; - } - }; - }); -})(Mirador); diff --git a/js/src/utils/handlebars.js b/js/src/utils/handlebars.js deleted file mode 100644 index 55a29f006c361be4ec0c903e98337118727bf8ac..0000000000000000000000000000000000000000 --- a/js/src/utils/handlebars.js +++ /dev/null @@ -1,7 +0,0 @@ -(function($) { - - $.Handlebars = (function() { - return Handlebars.create(); - })(); - -}(Mirador)); diff --git a/js/src/utils/iiif.js b/js/src/utils/iiif.js deleted file mode 100644 index 4e896df8ea31368dff533b5e05d21a32c107de88..0000000000000000000000000000000000000000 --- a/js/src/utils/iiif.js +++ /dev/null @@ -1,96 +0,0 @@ - -(function($) { - - $.Iiif = { - - getImageUrl: function(image) { - - if (!image.images[0].resource.service) { - id = image.images[0].resource['default'].service['@id']; - id = id.replace(/\/$/, ""); - return id; - } - var id = image.images[0].resource.service['@id']; - id = id.replace(/\/$/, ""); - - return id; - }, - - getVersionFromContext: function(context) { - if (context instanceof Array) { - context = context.filter(function(ctx) { - return typeof ctx === "string" && ctx.indexOf('http://iiif.io') === 0; - })[0]; - } - if (context == "http://iiif.io/api/image/2/context.json") { - return "2.0"; - } else { - return "1.1"; - } - }, - - getComplianceLevelFromProfile: function(profile) { - // what to return if we can't determine profile? 0 is not a good idea - // would be better to have $.Iiif.supports(profile, feature) but that needs a lot more! - var compliance = -1; - var complianceString = null; - if(profile) { - if(typeof(profile) === 'string'){ - complianceString = profile; - } else if (typeof(profile) === 'object'){ - complianceString = profile[0]; - } - switch(complianceString){ - case "http://iiif.io/api/image/2/level0.json": - compliance = 0; - break; - case "http://iiif.io/api/image/2/level1.json": - compliance = 1; - break; - case "http://iiif.io/api/image/2/level2.json": - compliance = 2; - break; - } - } - return compliance; - }, - - makeUriWithWidth: function(uri, width, version) { - uri = uri.replace(/\/$/, ''); - if (version[0] == '1') { - return uri + '/full/' + width + ',/0/native.jpg'; - } else { - return uri + '/full/' + width + ',/0/default.jpg'; - } - }, - - getImageHostUrl: function(json) { - var regex, - matches = []; - - if (!json.hasOwnProperty('image_host')) { - - json.image_host = json.tilesUrl || json['@id'] || ''; - - if (json.hasOwnProperty('identifier')) { - regex = new RegExp('/?' + json.identifier + '/?$', 'i'); - json.image_host = json.image_host.replace(regex, ''); - - } else { - regex = new RegExp('(.*)\/(.*)$'); - matches = regex.exec(json.image_host); - - if (matches && matches.length > 1) { - json.image_host = matches[1]; - json.identifier = matches[2]; - } - } - } - - return json.image_host; - } - - }; - -}(Mirador)); - diff --git a/js/src/utils/jsonBlobApi.js b/js/src/utils/jsonBlobApi.js deleted file mode 100644 index 3db2e1b8406e2a4e74d6ab6e94db58f3d6b7e903..0000000000000000000000000000000000000000 --- a/js/src/utils/jsonBlobApi.js +++ /dev/null @@ -1,84 +0,0 @@ -(function($){ - - var JSONBLOB_API_ENDPOINT = '/api/jsonBlob'; - - function getAPIUri(host, port, ssl, body) { - - var proto = 'http'; - port = port ? port : '80'; - - if ( ssl ) { - proto = 'https'; - port = port ? port : '443'; - } - - host = host ? host : 'jsonblob.com'; - - var path = JSONBLOB_API_ENDPOINT; - - // If the body is a string, this is a blob GET operation, - // otherwise it's a POST - if ( typeof body === 'string' || body instanceof String ){ - path += '/' + body; - } - - return proto + '://' + host + ':' + port + path; - } - - function initSettings(method, host, port, ssl, requestBody) { - - var ajaxSettings = { - type: method, - url: getAPIUri(host, port, ssl, requestBody), - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - processData: false - }; - - // POST The data - if ( typeof requestBody !== 'string' && !(requestBody instanceof String) ) { - ajaxSettings.data = JSON.stringify(requestBody); - } - - return ajaxSettings; - } - - function syncRequest(method, host, port, ssl, requestBody) { - var result; - var settings = initSettings(method, host, port, ssl, requestBody); - settings.async = false; - settings.success = function(data, textStatus, request) { - result = data; - }; - jQuery.ajax(settings); - return result; - } - - function asyncRequest(method, host, port, ssl, requestBody, cb) { - var settings = initSettings(method, host, port, ssl, requestBody); - settings.success = cb; - jQuery.ajax(settings); - } - - $.JSONBlobAPI = function(options) { - this.options = options; - }; - - - $.JSONBlobAPI.prototype = { - readSync: function(blobId) { - return syncRequest('GET', this.options.host, this.options.port, this.options.ssl, blobId); - }, - save: function(blob) { - var deferred = jQuery.Deferred(); - asyncRequest('POST', this.options.host, this.options.port, this.options.ssl, blob, function(data, textStatus, request) { - var blobid = request.getResponseHeader('X-Jsonblob'); - deferred.resolve(blobid); - }); - return deferred.promise(); - } - }; - -}(Mirador)); - diff --git a/js/src/utils/jsonLd.js b/js/src/utils/jsonLd.js deleted file mode 100644 index f40ca67574aaa7e007f3782c73315fb2854deab5..0000000000000000000000000000000000000000 --- a/js/src/utils/jsonLd.js +++ /dev/null @@ -1,72 +0,0 @@ -(function($) { - /** Get the language to use for displaying the given propertyValue. - * - * Uses the algorithm described in - * http://iiif.io/api/presentation/2.1/#language-of-property-values - */ - function getDisplayLanguage(languages, items) { - var itemLanguages = items.map(function(itm) { - if (typeof itm === 'string') { - return null; - } else { - return itm['@language']; - } - }); - - var bestLanguageMatch = null; - jQuery.each(languages, function(idx, lang) { - if (bestLanguageMatch !== null) { - return false; - } else { - if (itemLanguages.indexOf(lang) !== -1) { - bestLanguageMatch = lang; - } - } - }); - - // Only pick the first available language if **all** property values - // have an associated language - if (bestLanguageMatch === null && itemLanguages.indexOf(null) === -1) { - bestLanguageMatch = itemLanguages[0]; - } - return bestLanguageMatch; - } - - $.JsonLd = { - getTextValue: function(propertyValue, language) { - var languages = i18next.languages || ['en']; - if (typeof language === 'string') { - languages = [language].concat(languages); - } else if (Array.isArray(language)) { - languages = language.concat(languages); - } - - if (typeof propertyValue === 'undefined' || propertyValue === null) { - return ''; - } - else if (typeof propertyValue === 'string') { - return $.sanitizeHtml(propertyValue); - } - else if (Array.isArray(propertyValue)) { - var displayLanguage = getDisplayLanguage(languages, propertyValue); - var text = ''; - jQuery.each(propertyValue, function(idx, item) { - var textToAdd = ''; - if (typeof item === 'string' && displayLanguage === null) { - textToAdd = item; - } else if (item['@language'] === displayLanguage) { - textToAdd = item['@value']; - } - if (textToAdd !== '' && text !== '') { - text += '<br/>'; - } - text += textToAdd; - }); - return $.sanitizeHtml(text); - } else { - return $.sanitizeHtml(propertyValue['@value']); - } - } - }; - -}(Mirador)); diff --git a/js/src/utils/localJsonBlobApi.js b/js/src/utils/localJsonBlobApi.js deleted file mode 100644 index ca04b3cf683d22bded150aeec93532fa99399a3f..0000000000000000000000000000000000000000 --- a/js/src/utils/localJsonBlobApi.js +++ /dev/null @@ -1,36 +0,0 @@ -/* Local fake JsonBlob endpoint */ - -/* global Storage, Mirador */ - -(function($){ - function generateUUID() { - var d = new Date().getTime(); - var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (d + Math.random()*16)%16 | 0; - d = Math.floor(d/16); - return (c==='x' ? r : (r&0x3|0x8)).toString(16); - }); - return uuid; - } - - $.LocalJSONBlobAPI = function(opts) { - this.options = { - storage: window.localStorage - }; - jQuery.extend(this.options, opts); - }; - - $.LocalJSONBlobAPI.prototype = { - readSync: function(blobId) { - return JSON.parse(this.options.storage.getItem(blobId)); - }, - save: function(blob) { - var deferred = jQuery.Deferred(), - uuid = generateUUID(); - this.options.storage.setItem("BM-" + uuid, JSON.stringify(blob)); - deferred.resolve("BM-" + uuid); - return deferred.promise(); - } - }; -}(Mirador)); - diff --git a/js/src/utils/openSeadragon.js b/js/src/utils/openSeadragon.js deleted file mode 100644 index a62b08232683bc3f0500e281d80435f48c343cbe..0000000000000000000000000000000000000000 --- a/js/src/utils/openSeadragon.js +++ /dev/null @@ -1,23 +0,0 @@ -(function($) { - - $.OpenSeadragon = function(options) { - - var osd = OpenSeadragon( - - jQuery.extend({ - preserveViewport: true, - visibilityRatio: 1, - minZoomLevel: 0, - defaultZoomLevel: 0, - blendTime: 0.1, - alwaysBlend: false, - showNavigationControl: false - }, options) - - ); - - return osd; - - }; - -}(Mirador)); diff --git a/js/src/utils/saveController.js b/js/src/utils/saveController.js deleted file mode 100755 index 16a39204e81f37052c0c288f67999f4526aed240..0000000000000000000000000000000000000000 --- a/js/src/utils/saveController.js +++ /dev/null @@ -1,420 +0,0 @@ -(function($) { - - $.SaveController = function(config) { - - jQuery.extend(true, this, { - currentConfig: null, - originalConfig: null, // Don't know if we really need this. - shareEndpoint: null, // the place where POST requests for new saved sessions will go - historySize: null, // wishful thinking for later. - sessionID: null, - slots: [], - eventEmitter: null - }); - - // error check - removes invalid annotation tools - if (config.availableAnnotationDrawingTools) { - config.availableAnnotationDrawingTools = jQuery.grep(config.availableAnnotationDrawingTools, function(element, index) { - return jQuery.inArray(element, $.DEFAULT_SETTINGS.availableAnnotationDrawingTools) >= 0; - }); - } - - // error check on mainMenuSettings - if (config.mainMenuSettings && !config.mainMenuSettings.buttons) { - config.mainMenuSettings.buttons = {}; - } - - // if a user used dot notation for nested settings, unpack - // e.g. windowSettings.canvasControls.annotations.annotationState - function index(previousValue,currentValue,currentIndex) { - var newObj = {}; - newObj[currentValue] = previousValue; - return newObj; - } - jQuery.each(config, function(key, value) { - if (typeof key === "string" && key.indexOf('.') !== -1) { - var array = key.split('.').reverse(); - var object = array.reduce(index, value); - delete config[key]; - jQuery.extend(true, config, object); - } - }); - - /* - We want to deep copy/merge nested objects in the config, but array values should be overwritten - So, stringify arrays so extend overwrites them and then convert them back to arrays - */ - function iterateStringify(object) { - for (var property in object) { - if (object.hasOwnProperty(property)) { - if (object[property] instanceof Array) { - object[property] = JSON.stringify(object[property]); - } else if (typeof object[property] === "object") { - iterateStringify(object[property]); - } else {} - } - } - } - function iterateParse(object) { - for (var property in object) { - if (object.hasOwnProperty(property)) { - if (typeof object[property] === "string" && object[property][0] === '[') { - object[property] = JSON.parse(object[property]); - } else if (typeof object[property] === "object") { - iterateParse(object[property]); - } else {} - } - } - } - iterateStringify(config); - var newConfig = jQuery.extend(true, {}, $.DEFAULT_SETTINGS, config); - iterateParse(newConfig); - this.init(newConfig); - }; - - - $.SaveController.prototype = { - - init: function(config) { - var _this = this; - - this.eventEmitter = config.eventEmitter; - - // Don't want to save session - if (config.saveSession === false) { - this.currentConfig = config; - this.bindEvents(); - return false; - } - - var saveModule = config.jsonStorageEndpoint.module; - var saveOptions = config.jsonStorageEndpoint.options; - _this.storageModule = new $[saveModule](saveOptions); - - var sessionID = window.location.hash.substring(1); // will return empty string if none exists, causing the or statement below to evaluate to false, generating a new sesssionID. - - if (sessionID) { - this.sessionID = sessionID; - } else { - this.sessionID = $.genUUID(); // might want a cleaner thing for the url. - } - - if (localStorage.getItem(this.sessionID)) { - this.currentConfig = JSON.parse(localStorage.getItem(sessionID)); - } else { - var paramURL = window.location.search.substring(1); - if (paramURL) { - //get json from JSON storage and set currentConfig to it - var params = paramURL.split('='); - var jsonblob = params[1]; - this.currentConfig = this.storageModule.readSync(jsonblob) || config; - } else { - this.currentConfig = config; - } - } - //remove empty hashes from config - this.currentConfig.windowObjects = jQuery.map(this.currentConfig.windowObjects, function(value, index) { - if (Object.keys(value).length === 0) return null; - return value; - }); - - //add UUIDs to parts of config that need them - if (this.currentConfig.windowObjects) { - jQuery.each(this.currentConfig.windowObjects, function(index, window) { - if (!window.id) { - window.id = $.genUUID(); - } - }); - } - - // see: http://html5demos.com/history and http://diveintohtml5.info/history.html - // put history stuff here, for a great cross-browser demo, see: http://browserstate.github.io/history.js/demo/ - // http://stackoverflow.com/questions/17801614/popstate-passing-popped-state-to-event-handler - - //also remove ?json bit so it's a clean URL - var cleanURL = window.location.href.replace(window.location.search, ""); - if (window.location.hash) { - history.replaceState(this.currentConfig, "Mirador Session", cleanURL); - } else { - history.replaceState(this.currentConfig, "Mirador Session", cleanURL+"#"+this.sessionID); - } - - this.bindEvents(); - - }, - - getWindowObjectById: function(windowId) { - var returnObject = null; - jQuery.each(this.currentConfig.windowObjects, function(index, window) { - if (window.id === windowId) { - returnObject = window; - return false; - } - }); - return returnObject; - }, - - getWindowAnnotationsList: function(windowId) { - if (this.windowsAnnotationsLists) { - return this.windowsAnnotationsLists[windowId]; - } else { - return null; - } - }, - - getSlots: function() { - return this.slots; - }, - - getWindowElement: function(windowId) { - if (this.windowsElements) { - return this.windowsElements[windowId]; - } else { - return null; - } - }, - - getStateProperty: function(prop) { - return this.get(prop, 'currentConfig'); - }, - - getManifestIndex: function(manifestUri) { - var manifestIndex = -1; - jQuery.each(this.currentConfig.data, function(index, dataObj) { - if (dataObj.manifestUri === manifestUri) { - manifestIndex = index; - return false; - } - }); - return manifestIndex; - }, - - get: function(prop, parent) { - if (parent) { - return this[parent][prop]; - } - return this[prop]; - }, - - set: function(prop, value, options) { - var _this = this; - // when a property of the config is updated, - // save it to localStore. - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - if (this.currentConfig.saveSession) { - this.save(); - } - _this.eventEmitter.publish("saveControllerConfigUpdated"); - }, - - bindEvents: function() { - var _this = this; - // listen to existing events and use the - // available data to update the appropriate - // field in the stored config. - - _this.eventEmitter.subscribe('manifestsPanelVisible.set', function(event, manifestPanelVisible) { - _this.set("manifestPanelVisible", manifestPanelVisible, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe('windowUpdated', function(event, options) { - var windowObjects = _this.currentConfig.windowObjects; - if (windowObjects && windowObjects.length > 0) { - jQuery.each(windowObjects, function(index, window){ - if (window.id === options.id) { - jQuery.extend(windowObjects[index], options); - } - }); - } else { - windowObjects = [options]; - } - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe("imageBoundsUpdated", function(event, options) { - var windowObjects = _this.currentConfig.windowObjects; - if (windowObjects && windowObjects.length > 0) { - jQuery.each(windowObjects, function(index, window){ - if (window.id === options.id) { - if (!windowObjects[index].windowOptions) { - windowObjects[index].windowOptions = {}; - } - windowObjects[index].windowOptions.osdBounds = options.osdBounds; - } - }); - } - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe('ANNOTATIONS_LIST_UPDATED', function(event, options) { - if (!_this.windowsAnnotationsLists) { - _this.windowsAnnotationsLists = {}; - } - _this.windowsAnnotationsLists[options.windowId] = options.annotationsList; - _this.eventEmitter.publish('annotationListLoaded.' + options.windowId); - }); - - _this.eventEmitter.subscribe('WINDOW_ELEMENT_UPDATED', function(event, options) { - if (!_this.windowsElements) { - _this.windowsElements = {}; - } - _this.windowsElements[options.windowId] = options.element; - }); - - _this.eventEmitter.subscribe('windowSlotAddressUpdated', function(event, options) { - var windowObjects = _this.currentConfig.windowObjects; - if (windowObjects && windowObjects.length > 0) { - jQuery.each(windowObjects, function(index, window){ - if (window.id === options.id) { - jQuery.extend(windowObjects[index], options); - } - }); - } else { - windowObjects = [options]; - } - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe('manifestQueued', function(event, manifestObject, repository) { - var data = _this.currentConfig.data, - objectInConfig = false, - url = manifestObject.uri; - - jQuery.each(data, function(index, manifestObject){ - if (manifestObject.manifestUri === url) { - objectInConfig = true; - } - }); - if (!objectInConfig) { - data.push({"manifestUri":url, "location":repository}); - _this.set("data", data, {parent: "currentConfig"}); - } - var manifests = _this.currentConfig.manifests; - manifests[url] = manifestObject; - _this.set('manifests', manifests, {parent: 'currentConfig'}); - }); - - _this.eventEmitter.subscribe("slotsUpdated", function(event, options) { - _this.slots = options.slots; - }); - - _this.eventEmitter.subscribe("layoutChanged", function(event, layoutDescription) { - // string parents to prevent invalid circular representation. - var serialisedLayout = JSON.stringify(layoutDescription, function(key, value) { - if (key === 'parent') return undefined; - return value; - }); - _this.set('layout', serialisedLayout, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe("windowSlotAdded", function(event, options) { - var windowObjects = _this.currentConfig.windowObjects, - inArray = jQuery.grep(windowObjects, function(windowObj) { - return windowObj.id === options.id; - }); - if (inArray.length === 0) { - windowObjects.push({ - 'id' : options.id, - 'slotAddress': options.slotAddress - }); - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - } - }); - - _this.eventEmitter.subscribe("windowsRemoved", function(event) { - _this.set("windowObjects", [], {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe("windowRemoved", function(event, windowID) { - var windowObjects = jQuery.grep(_this.currentConfig.windowObjects, function(window, index) { - return window.id !== windowID; - }); - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - }); - - - _this.eventEmitter.subscribe('DELETE_FROM_CONFIG', function(event, options) { - var windowObjects = jQuery.grep(_this.currentConfig.windowObjects, function(window, index) { - return window.loadedManifest !== options.loadedManifest || window.id; - }); - _this.set("windowObjects", windowObjects, {parent: "currentConfig"} ); - }); - - _this.eventEmitter.subscribe('etc...', function(junk) { - // handle adding the property in the appropriate place - // in this.currentConfig by passing to the _this.set(), - // which "saves" to localstore as a side effect. - - }); - - // We could have simply listened to the 'set' event that - // would have been emitted by objects when their models were - // updated and sent the results to a parser function that - // would extract the calling object's properties in the config - // and updated them if they were different, but we can't - // currently do that the way the app is written, since we - // didn't actually follow that patttern almost anywhere. - // - // _this.eventEmitter.subscribe('set', function(junk) { - // // 1.) send the junk to a parser function - // // 2.) use this.set(parsedJunk) to update - // // this.currentConfig, with the side effect of - // // saving to localStorage. - // - // }); - - // you may need to bind another event here that responds to the - // user navigating history, for the purpose of popping the - // history entry back off. - - }, - - cleanup: function(obj) { - - /** - * Setup an array-based implementation of a Set - * to track the objects we have - * already cloned - this will generically clean circular refs. - **/ - var clonedSet = []; - - function cloner(obj) { - - if(obj === null || typeof(obj) != 'object') { - return obj; - } - - if (clonedSet.indexOf(obj) === -1) { - clonedSet.push(obj); - var temp = Array.isArray(obj) ? [] : {}; - for(var key in obj) { - if (obj.hasOwnProperty(key)) { - temp[key] = cloner(obj[key]); - } - } - return temp; - } - - return undefined; - } - - return cloner(obj); - }, - - save: function() { - var _this = this; - - // the hash must be stringified because - // localStorage is a key:value store that - // only accepts strings. - - localStorage.setItem(_this.sessionID, JSON.stringify(_this.cleanup(_this.currentConfig))); - } - - }; - -}(Mirador)); diff --git a/js/src/utils/utils.js b/js/src/utils/utils.js deleted file mode 100644 index 0d12427af8be1ba1dbefbec77e3fa1b506ce0668..0000000000000000000000000000000000000000 --- a/js/src/utils/utils.js +++ /dev/null @@ -1,283 +0,0 @@ -(function($) { - - $.trimString = function(str) { - return str.replace(/^\s+|\s+$/g, ''); - }; - - /* -------------------------------------------------------------------------- - Methods related to manifest data - -------------------------------------------------------------------------- */ - - $.getImageIndexById = function(imagesList, id) { - var imgIndex = 0; - - jQuery.each(imagesList, function(index, img) { - if ($.trimString(img['@id']) === $.trimString(id)) { - imgIndex = index; - } - }); - - return imgIndex; - }; - - $.getThumbnailForCanvas = function(canvas, width) { - var version = "1.1", - compliance = -1, - service, - thumbnailUrl; - - // Ensure width is an integer... - width = parseInt(width, 10); - - // Respecting the Model... - if (canvas.hasOwnProperty('thumbnail')) { - // use the thumbnail image, prefer via a service - if (typeof(canvas.thumbnail) == 'string') { - thumbnailUrl = canvas.thumbnail; - } else if (canvas.thumbnail.hasOwnProperty('service')) { - service = canvas.thumbnail.service; - if(service.hasOwnProperty('profile')) { - compliance = $.Iiif.getComplianceLevelFromProfile(service.profile); - } - if(compliance === 0){ - // don't change existing behaviour unless compliance is explicitly 0 - thumbnailUrl = canvas.thumbnail['@id']; - } else { - // Get the IIIF Image API via the @context - if (service.hasOwnProperty('@context')) { - version = $.Iiif.getVersionFromContext(service['@context']); - } - thumbnailUrl = $.Iiif.makeUriWithWidth(service['@id'], width, version); - } - } else { - thumbnailUrl = canvas.thumbnail['@id']; - } - } else { - // No thumbnail, use main image - var resource = canvas.images[0].resource; - service = resource['default'] ? resource['default'].service : resource.service; - if (service.hasOwnProperty('@context')) { - version = $.Iiif.getVersionFromContext(service['@context']); - } - thumbnailUrl = $.Iiif.makeUriWithWidth(service['@id'], width, version); - } - return thumbnailUrl; - }; - - /* - miscellaneous utilities - */ - - $.getQueryParams = function(url) { - var assoc = {}; - var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); }; - var queryString = url.split('?')[1]; - if (typeof queryString === "undefined") { - return {}; - } - var keyValues = queryString.split('&'); - - for(var i in keyValues) { - var key = keyValues[i].split('='); - if (key.length > 1) { - assoc[decode(key[0])] = decode(key[1]); - } - } - - return assoc; - }; - - $.genUUID = function() { - var idNum = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16|0, v = c == 'x' ? r : (r&0x3|0x8); - return v.toString(16); - }); - - return idNum; - }; - - jQuery.fn.slideFadeToggle = function(speed, easing, callback) { - return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback); - }; - - $.throttle = function(func, wait, options) { - var context, args, result; - var timeout = null; - var previous = 0; - - if (typeof options !== 'undefined') { - options = {}; - } - - var later = function() { - previous = options.leading === false ? 0 : new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(); - if (!previous && options.leading === false) previous = now; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout && options.trailing !== false) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - $.debounce = function(func, wait, immediate) { - var timeout, args, context, timestamp, result; - return function() { - context = this; - args = arguments; - timestamp = new Date(); - var later = function() { - var last = (new Date()) - timestamp; - if (last < wait) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) result = func.apply(context, args); - } - }; - var callNow = immediate && !timeout; - if (!timeout) { - timeout = setTimeout(later, wait); - } - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // http://upshots.org/javascript/jquery-test-if-element-is-in-viewport-visible-on-screen - $.isOnScreen = function(elem, outsideViewportFactor) { - var factor = 1; - if (outsideViewportFactor) { - factor = outsideViewportFactor; - } - var win = jQuery(window); - var viewport = { - top : (win.scrollTop() * factor), - left : (win.scrollLeft() * factor) - }; - viewport.bottom = (viewport.top + win.outerHeight()) * factor; - viewport.right = (viewport.left + win.outerWidth()) * factor; - - var el = jQuery(elem); - var bounds = el.offset(); - bounds.bottom = bounds.top + el.height(); - bounds.right = bounds.left + el.width(); - - return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom)); - }; - - $.getRangeIDByCanvasID = function(structures, canvasID /*, [given parent range] (for multiple ranges, later) */) { - var ranges = jQuery.grep(structures, function(range) { return jQuery.inArray(canvasID, range.canvases) > -1; }), - rangeIDs = jQuery.map(ranges, function(range) { return range['@id']; }); - - return rangeIDs; - }; - - $.layoutDescriptionFromGridString = function (gridString) { - var columns = parseInt(gridString.substring(gridString.indexOf("x") + 1, gridString.length),10), - rowsPerColumn = parseInt(gridString.substring(0, gridString.indexOf("x")),10), - layoutDescription = { - type:'row' - }; - - if (gridString === "1x1") return layoutDescription; - - layoutDescription.children = []; - - // Javascript does not have range expansions quite yet, - // long live the humble for loop. - // Use a closure to contain the column and row variables. - for (var i = 0, c = columns; i < c; i++) { - var column = { type: 'column'}; - - if (rowsPerColumn > 1) { - column.children = []; - for (var j = 0, r = rowsPerColumn; j < r; j++) { - column.children.push({ - type: 'row' - }); - } - } - - layoutDescription.children.push(column); - } - - return layoutDescription; - }; - - // Configurable Promises - $.createImagePromise = function(imageUrl) { - var img = new Image(), - dfd = jQuery.Deferred(); - - img.onload = function() { - dfd.resolve(img.src); - }; - - img.onerror = function() { - dfd.reject(img.src); - }; - - dfd.fail(function() { - console.log('image failed to load: ' + img.src); - }); - - img.src = imageUrl; - return dfd.promise(); - }; - - $.enterFullscreen = function(el) { - if (el.requestFullscreen) { - el.requestFullscreen(); - } else if (el.mozRequestFullScreen) { - el.mozRequestFullScreen(); - } else if (el.webkitRequestFullscreen) { - el.webkitRequestFullscreen(); - } else if (el.msRequestFullscreen) { - el.msRequestFullscreen(); - } - }; - - $.exitFullscreen = function() { - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitExitFullscreen) { - document.webkitExitFullscreen(); - } - }; - - $.isFullscreen = function() { - var fullscreen = $.fullscreenElement(); - return (fullscreen.length > 0); - }; - - $.fullscreenElement = function() { - return (document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement); - }; - - $.sanitizeHtml = function(dirty) { - return sanitizeHtml(dirty, { - allowedTags: ['a', 'b', 'br', 'i', 'img', 'p', 'span', 'strong', 'em', 'ul', 'ol', 'li'], - allowedAttributes: { - 'a': ['href', 'target'], - 'img': ['src', 'alt'], - 'p': ['dir'] - } - }); - }; - -}(Mirador)); diff --git a/js/src/viewer.js b/js/src/viewer.js deleted file mode 100644 index 939e0973371fb4ff58a036d88d99fb4f12e866dd..0000000000000000000000000000000000000000 --- a/js/src/viewer.js +++ /dev/null @@ -1,325 +0,0 @@ -(function($) { - - $.Viewer = function(options) { - jQuery.extend(true, this, { - id: null, - data: null, - element: null, - canvas: null, - workspaceType: null, - layout: null, - workspace: null, - mainMenu: null, - workspaceAutoSave: null, - windowSize: {}, - resizeRatio: {}, - currentWorkspaceVisible: true, - state: null, - eventEmitter: null, - overlayStates: { - 'workspacePanelVisible': false, - 'manifestsPanelVisible': false, - 'optionsPanelVisible': false, - 'bookmarkPanelVisible': false - }, - manifests: [] - }, options); - - this.id = this.state.getStateProperty('id'); - this.data = this.state.getStateProperty('data'); - // get initial manifests - this.element = this.element || jQuery('#' + this.id); - if (options.availableAnnotationDrawingTools && options.availableAnnotationDrawingTools.length > 0) { - this.availableAnnotationDrawingTools = options.availableAnnotationDrawingTools; - } - - if (this.data) { - this.init(); - } - }; - - $.Viewer.prototype = { - - init: function() { - var _this = this; - - // i18next options - var i18nextOptions = { - fallbackLng: 'en', - load: 'unspecific', - debug: false, - backend: { - loadPath: _this.state.getStateProperty('buildPath') + _this.state.getStateProperty('i18nPath')+'{{lng}}/{{ns}}.json' - } - }; - - // set the language from configuration - var configuredLanguage = _this.state.getStateProperty('language'); - if(configuredLanguage){ - i18nextOptions.lng = configuredLanguage; - } - - //initialize i18next - i18next.use(i18nextXHRBackend).use(i18nextBrowserLanguageDetector).init( - i18nextOptions, - _this.setupViewer.bind(_this) - ); - // because this is a callback, we need to bind "_this" to explicitly retain the calling context of this function (the viewer object instance)); - }, - - setupViewer: function() { - var _this = this; - //add background and positioning information on the root element that is provided in config - var backgroundImage = _this.state.getStateProperty('buildPath') + _this.state.getStateProperty('imagesPath') + 'debut_dark.png'; - this.element.css('background-color', '#333').css('background-image','url('+backgroundImage+')').css('background-position','left top') - .css('background-repeat','repeat'); - - //register $.Handlebars helper - $.Handlebars.registerHelper('t', function(i18n_key) { - var result = i18next.t(i18n_key); - return new $.Handlebars.SafeString(result); - }); - - //check all buttons in mainMenu. If they are all set to false, then don't show mainMenu - var showMainMenu = false; - jQuery.each(this.state.getStateProperty('mainMenuSettings').buttons, function(key, value) { - if (value) { showMainMenu = true; } - }); - // but, mainMenu should be displayed if we have userButtons and/or userLogo defined - if (this.state.getStateProperty('mainMenuSettings').userButtons && this.state.getStateProperty('mainMenuSettings').userButtons.length > 0) { - showMainMenu = true; - } - if (this.state.getStateProperty('mainMenuSettings').userLogo && !jQuery.isEmptyObject(this.state.getStateProperty('mainMenuSettings').userLogo)) { - showMainMenu = true; - } - - //even if all these buttons are available, developer can override and set show to false, - //in which case, don't show mainMenu at all - if (this.state.getStateProperty('mainMenuSettings').show === false) { - showMainMenu = false; - } - - // add main menu - if (showMainMenu) { - this.mainMenu = new $.MainMenu({ appendTo: this.element, state: this.state, eventEmitter: this.eventEmitter }); - this.eventEmitter.publish('mainMenuInitialized'); - } - - // add viewer area - this.canvas = jQuery('<div/>') - .addClass('mirador-viewer') - .appendTo(this.element); - - if (!showMainMenu) { - this.canvas.css("top", "0px"); - } - - // add workspace configuration - this.layout = typeof this.state.getStateProperty('layout') !== 'string' ? JSON.stringify(this.state.getStateProperty('layout')) : this.state.getStateProperty('layout'); - this.workspace = new $.Workspace({ - layoutDescription: this.layout.charAt(0) === '{' ? JSON.parse(this.layout) : $.layoutDescriptionFromGridString(this.layout), - appendTo: this.element.find('.mirador-viewer'), - state: this.state, - eventEmitter: this.eventEmitter - }); - - this.workspacePanel = new $.WorkspacePanel({ - appendTo: this.element.find('.mirador-viewer'), - state: this.state, - eventEmitter: this.eventEmitter - }); - - this.manifestsPanel = new $[this.state.getStateProperty('manifestsPanel').module](jQuery.extend({}, this.state.getStateProperty('manifestsPanel').options, { appendTo: this.element.find('.mirador-viewer'), state: this.state, eventEmitter: this.eventEmitter })); - //only instatiate bookmarkPanel if we need it - if (showMainMenu && this.state.getStateProperty('mainMenuSettings').buttons.bookmark) { - this.bookmarkPanel = new $.BookmarkPanel({ appendTo: this.element.find('.mirador-viewer'), state: this.state, eventEmitter: this.eventEmitter }); - } - - // set this to be displayed - this.set('currentWorkspaceVisible', true); - - this.bindEvents(); - this.listenForActions(); - // retrieve manifests - this.getManifestsData(); - - if (this.state.getStateProperty('windowObjects').length === 0 && this.state.getStateProperty('openManifestsPage')) { - this.workspace.slots[0].addItem(); - } - }, - - listenForActions: function() { - var _this = this; - - // check that windows are loading first to set state of slot? - _this.eventEmitter.subscribe('manifestReceived', function(event, newManifest) { - if (_this.state.getStateProperty('windowObjects')) { - var check = jQuery.grep(_this.state.getStateProperty('windowObjects'), function(object, index) { - return object.loadedManifest === newManifest.uri; - }); - jQuery.each(check, function(index, config) { - _this.loadManifestFromConfig(config); - }); - } - }); - - _this.eventEmitter.subscribe('TOGGLE_WORKSPACE_PANEL', function(event) { - _this.toggleWorkspacePanel(); - }); - - _this.eventEmitter.subscribe('TOGGLE_BOOKMARK_PANEL', function(event) { - _this.toggleBookmarkPanel(); - }); - - _this.eventEmitter.subscribe('TOGGLE_FULLSCREEN', function(event) { - if ($.fullscreenElement()) { - $.exitFullscreen(); - //enable any window-specific fullscreen buttons - _this.eventEmitter.publish('ENABLE_WINDOW_FULLSCREEN'); - } else { - $.enterFullscreen(_this.element[0]); - //disable any window-specific fullscreen buttons - _this.eventEmitter.publish('DISABLE_WINDOW_FULLSCREEN'); - } - }); - - jQuery(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange", function() { - _this.eventEmitter.publish('MAINMENU_FULLSCREEN_BUTTON'); - // in case the user clicked ESC instead of clicking on the toggle fullscreen button, reenable the window fullscreen button - if (!$.fullscreenElement()) { - _this.eventEmitter.publish('ENABLE_WINDOW_FULLSCREEN'); - } - }); - - _this.eventEmitter.subscribe('TOGGLE_LOAD_WINDOW', function(event) { - _this.toggleLoadWindow(); - }); - - _this.eventEmitter.subscribe('ADD_MANIFEST_FROM_URL', function(event, url, location) { - _this.addManifestFromUrl(url, location); - }); - - _this.eventEmitter.subscribe('TOGGLE_OVERLAYS_FALSE', function(event) { - jQuery.each(_this.overlayStates, function(oState, value) { - // toggles the other top-level panels closed and focuses the - // workspace. For instance, after selecting an object from the - // manifestPanel. - _this.set(oState, false, {parent: 'overlayStates'}); - }); - }); - - }, - - bindEvents: function() { - var _this = this; - }, - - get: function(prop, parent) { - if (parent) { - return this[parent][prop]; - } - return this[prop]; - }, - - set: function(prop, value, options) { - var _this = this; - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - _this.eventEmitter.publish(prop + '.set', value); - }, - - // Sets state of overlays that layer over the UI state - toggleOverlay: function(state) { - var _this = this; - // first confirm all others are off - jQuery.each(this.overlayStates, function(oState, value) { - if (state !== oState) { - _this.set(oState, false, {parent: 'overlayStates'}); - } - }); - var currentState = this.get(state, 'overlayStates'); - this.set(state, !currentState, {parent: 'overlayStates'}); - }, - - toggleLoadWindow: function() { - this.toggleOverlay('manifestsPanelVisible'); - }, - - toggleWorkspacePanel: function() { - this.toggleOverlay('workspacePanelVisible'); - }, - - toggleBookmarkPanel: function() { - this.toggleOverlay('bookmarkPanelVisible'); - }, - - getManifestsData: function() { - var _this = this; - - _this.data.forEach(function(manifest) { - if (manifest.hasOwnProperty('manifestContent')) { - var content = manifest.manifestContent; - _this.addManifestFromUrl(content['@id'], manifest.location ? manifest.location : '', content); - } else if (manifest.hasOwnProperty('manifestUri')) { - var url = manifest.manifestUri; - _this.addManifestFromUrl(url, manifest.location ? manifest.location : '', null); - } else if (manifest.hasOwnProperty('collectionContent')) { - var collectionContent = manifest.collectionContent; - _this.addCollectionFromUrl(collectionContent['@id'], manifest.location ? manifest.location : '', collectionContent); - } else if (manifest.hasOwnProperty('collectionUri')) { - var collectionUrl = manifest.collectionUri; - _this.addCollectionFromUrl(collectionUrl, manifest.location ? manifest.location : '', null); - } - }); - }, - - hasWidgets: function(collection) { - return ( - typeof collection.widgets !== 'undefined' && - collection.widgets && - !jQuery.isEmptyObject(collection.widgets) && - collection.widgets.length > 0 - ); - }, - - addManifestFromUrl: function(url, location, content) { - var _this = this, - manifest; - - if (!_this.state.getStateProperty('manifests')[url]) { - manifest = new $.Manifest(url, location, content); - _this.eventEmitter.publish('manifestQueued', manifest, location); - manifest.request.done(function() { - _this.eventEmitter.publish('manifestReceived', manifest); - }); - } - }, - - addCollectionFromUrl: function(url, location, content) { - var _this = this, - collection; - if (!_this.state.getStateProperty('manifests')[url]) { - collection = new $.Collection(url, location, content); - _this.eventEmitter.publish('manifestQueued', collection, location); - collection.request.done(function() { - _this.eventEmitter.publish('collectionReceived', [collection, url, null]); - }); - } - }, - - loadManifestFromConfig: function(options) { - var _this = this; - - //make a copy of options and pass that so we don't get a circular reference - var windowConfig = jQuery.extend(true, {}, options); - //delete this old set of options (because they will be replaced by the actions from ADD_WINDOW) - _this.eventEmitter.publish('DELETE_FROM_CONFIG', options); - - _this.eventEmitter.publish('ADD_WINDOW', windowConfig); - } - }; - -}(Mirador)); diff --git a/js/src/viewer/bookmarkPanel.js b/js/src/viewer/bookmarkPanel.js deleted file mode 100644 index 62a19b43d124d10e4a4002c2591faa972572cdf7..0000000000000000000000000000000000000000 --- a/js/src/viewer/bookmarkPanel.js +++ /dev/null @@ -1,76 +0,0 @@ -(function($) { - - $.BookmarkPanel = function(options) { - - jQuery.extend(true, this, { - element: null, - appendTo: null, - state: null, - eventEmitter: null - }, options); - - this.init(); - - }; - - $.BookmarkPanel.prototype = { - init: function () { - this.element = jQuery(this.template()).appendTo(this.appendTo); - var jsonStorageEndpoint = this.state.getStateProperty('jsonStorageEndpoint'), - saveModule = jsonStorageEndpoint.module, - saveOptions = jsonStorageEndpoint.options; - this.storageModule = new $[saveModule](saveOptions); - - this.bindEvents(); - this.listenForActions(); - }, - - bindEvents: function() { - var _this = this; - }, - - listenForActions: function() { - var _this = this; - _this.eventEmitter.subscribe('bookmarkPanelVisible.set', function(_, stateValue) { - _this.onPanelVisible(_, stateValue); - }); - _this.eventEmitter.subscribe('saveControllerConfigUpdated', function() { - _this.onConfigUpdated(); - }); - }, - - onPanelVisible: function(_, stateValue) { - var _this = this; - if (stateValue) { _this.show(); return; } - _this.hide(); - }, - - onConfigUpdated: function() { - var _this = this; - _this.storageModule.save(_this.state.cleanup(_this.state.currentConfig)) - .then(function(blobId) { - var bookmarkURL = window.location.href.replace(window.location.hash, '') + "?json="+blobId; - _this.element.find('#share-url').val(bookmarkURL).focus().select(); - }); - }, - - hide: function() { - jQuery(this.element).hide({effect: "slide", direction: "up", duration: 300, easing: "swing"}); - }, - - show: function() { - jQuery(this.element).show({effect: "slide", direction: "up", duration: 300, easing: "swing"}); - }, - - template: $.Handlebars.compile([ - '<div id="bookmark-panel">', - '<h3>{{t "bookmarkTitle"}}</h3>', - '<span>', - '{{t "url"}}: <input id="share-url" type="text"></input>', - '<a href="javascript:;" class="mirador-btn mirador-icon-copy" data-clipboard-target="share-url"><i class="fa fa-files-o fa-lg"></i></a>', - '</span>', - '</div>' - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/viewer/collectionTreeManifestsPanel.js b/js/src/viewer/collectionTreeManifestsPanel.js deleted file mode 100644 index 0251e569db3dc998f424b900e1e9e90a635c62c2..0000000000000000000000000000000000000000 --- a/js/src/viewer/collectionTreeManifestsPanel.js +++ /dev/null @@ -1,579 +0,0 @@ -(function($) { - - $.CollectionTreeManifestsPanel = function(options) { - - jQuery.extend(true, this, { - element: null, - listItems: null, - appendTo: null, - manifestListItems: [], - manifestListElement: null, - manifestLoadStatusIndicator: null, - treeElement: null, //The container element around the collection tree - expectedThings: [], //A list of manifest URIs expected for the current collection "folder" - preloadedManifests: [], //A list of manifest URIs loaded in through the data attribute - userManifests: [], //A list of manifest URIs loaded in through the "Load Object from URL" form - nodeManifests: {}, //Maps node IDs to a list of manifest URIs its collection holds - nodeCollections: {}, //Maps node IDs to a list of collection URIs its collection holds - nodeIdToUri: {}, //Maps node IDs to their respective URIs - uriToNodeId: {}, //Maps URIs to a list of node IDs that represent it (Inverse of nodeIdToUri) - nodeChildren: {}, //Maps node IDs to a list of children node IDs - unexpandedNodes: {}, //A set of node ID => true entries that contains all node IDs pending expansion (i.e. may have more content) - topCollectionsUris: {}, //A set of URIs already placed at the top level of the collection tree - treeQueue: [], //A list that holds event triggers before the tree is ready; will be removed when ready - resultsWidth: 0, - state: null, - eventEmitter: null - }, options); - - var _this = this; - _this.init(); - - }; - - $.CollectionTreeManifestsPanel.prototype = { - - init: function() { - var _this = this; - this.element = jQuery(this.template({ - showURLBox : this.state.getStateProperty('showAddFromURLBox') - })).appendTo(this.appendTo); - this.manifestListElement = this.element.find('ul'); - - // Populate the preloads folder with manifests in the configuration - jQuery.each(this.state.currentConfig.data, function(_, v) { - if (v.hasOwnProperty('manifestUri')) { - _this.preloadedManifests.push(v.manifestUri); - } - }); - // Expect these preloads by default - this.expectedThings = this.preloadedManifests; - // Create the collection tree - this.treeElement = jQuery('#collection-tree').jstree({ - core: { - // Seed the tree with the two basic "folders" - data: [ - { - id: 'preload', - text: i18next.t('preloadedManifests'), - icon: 'fa fa-suitcase', - state: { - selected: true - }, - children: [] - }, - { - id: 'user', - text: i18next.t('myManifests'), - icon: 'fa fa-user', - children: [] - } - ], - // Tune looks - themes: { - dots: false - }, - check_callback: true, // IMPORTANT: This line allows code to edit the tree later - multiple: false // IMPORTANT: This prevents multiple nodes from being selected - } - // Hook up event for when a node is selected - }).on('select_node.jstree', function(event, data) { - _this.changeNode(data.node); - // Hook up event for when a node is expanded (> clicked) - }).on('open_node.jstree', function(event, data) { - _this.expandNode(data.node); - // Hook up "ready" event to handle backlogged collection loads - }).on('ready.jstree', function() { - // Cache the backlog and remove the original; this signals to other methods that it's OK to manipulate the tree - var theQueue = _this.treeQueue.slice(0); - delete _this.treeQueue; - // Process the backlog - jQuery.each(theQueue, function(_, v) { - if (v.length == 4) { // When a collection is loaded successfully, the logged entry is 4 elements long - _this.onCollectionReceived.apply(_this, v); - } else { // When a collection fails to load, the logged entry is 3 elements long - _this.onCollectionNotReceived.apply(_this, v); - } - }); - }); - - //this code gives us the max width of the results area, used to determine how many preview images to show - //cloning the element and adjusting the display and visibility means it won't break the normal flow - var clone = this.element.clone().css("visibility","hidden").css("display", "block").appendTo(this.appendTo); - this.resultsWidth = clone.find('.member-select-results').outerWidth(); - this.controlsHeight = clone.find('.manifest-panel-controls').outerHeight(); - this.paddingListElement = this.controlsHeight; - this.manifestListElement.css("padding-bottom", this.paddingListElement); - clone.remove(); - - // this.manifestLoadStatusIndicator = new $.ManifestLoadStatusIndicator({ - // manifests: this.parent.manifests, - // appendTo: this.element.find('.member-select-results') - // }); - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function() { - var _this = this; - - // handle subscribed events - // When the manifest selection panel is brought up or hidden - _this.eventEmitter.subscribe('manifestsPanelVisible.set', function(_, stateValue) { - _this.onPanelVisible(_, stateValue); - }); - - // When a manifest is received - _this.eventEmitter.subscribe('manifestReceived', function(event, newManifest) { - _this.onManifestReceived(event, newManifest); - }); - - // When a collection is received - _this.eventEmitter.subscribe('collectionReceived', function(event, newCollection, parentUri, parentNodeId) { - _this.onCollectionReceived(event, newCollection, parentUri, parentNodeId); - }); - - // When a collection failed to load - _this.eventEmitter.subscribe('collectionNotReceived', function(event, parentUri, parentNodeId) { - _this.onCollectionNotReceived(event, parentUri, parentNodeId); - }); - - // When Mirador gets an explicit request to load a manifest from a URL - _this.eventEmitter.subscribe('ADD_MANIFEST_FROM_URL', function(event, url) { - // Add it if it has not been loaded before - if (_this.userManifests.indexOf(url) == -1) { - _this.userManifests.push(url); - } - // Shift to the "User-Loaded Manifests" folder - _this.treeElement.jstree('deselect_all'); - _this.treeElement.jstree('select_node', 'user'); - }); - - // When Mirador gets an explicit request to load a collection from a URL - _this.eventEmitter.subscribe('ADD_COLLECTION_FROM_URL', function(event, url, source) { - _this.addCollectionFromUrl(url, null, true); - }); - - // When Mirador gets a request to load an object (manifest or collection) from a URL (e.g. the "Add object from URL" form) - _this.eventEmitter.subscribe('ADD_OBJECT_FROM_URL', function(event, url, source) { - _this.addObjectFromUrl(url, source, true); - }); - }, - - bindEvents: function() { - var _this = this; - - // handle interface events - this.element.find('form#url-load-form').on('submit', function(event) { - event.preventDefault(); - _this.addObjectUrl(jQuery(this).find('input').val()); - }); - - this.element.find('.remove-object-option').on('click', function(event) { - _this.togglePanel(event); - }); - - // Filter manifests based on user input - this.element.find('#manifest-search').on('keyup input', function(event) { - _this.filterManifests(this.value); - }); - - this.element.find('#manifest-search-form').on('submit', function(event) { - event.preventDefault(); - }); - - jQuery(window).resize($.throttle(function() { - _this.resizePanel(); - }, 50, true)); - }, - - hide: function() { - var _this = this; - jQuery(this.element).hide({effect: "fade", duration: 160, easing: "easeOutCubic"}); - }, - - show: function() { - var _this = this; - jQuery(this.element).show({effect: "fade", duration: 160, easing: "easeInCubic"}); - }, - - // Send explicit request for adding a manifest from a URL - addManifestUrl: function(url) { - var _this = this; - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [url, "(Added from URL)"]); - }, - - // Send explicit request for adding a manifest or collection from a URL - addObjectUrl: function(url) { - var _this = this; - _this.eventEmitter.publish('ADD_OBJECT_FROM_URL', [url, "(Added from URL)"]); - }, - - togglePanel: function(event) { - var _this = this; - _this.eventEmitter.publish('TOGGLE_LOAD_WINDOW'); - }, - - filterManifests: function(value) { - var _this = this; - if (value.length > 0) { - _this.element.find('.items-listing li').show().filter(function() { - return jQuery(this).text().toLowerCase().indexOf(value.toLowerCase()) === -1; - }).hide(); - } else { - _this.element.find('.items-listing li').show(); - } - }, - - resizePanel: function() { - var _this = this; - var clone = _this.element.clone().css("visibility","hidden").css("display", "block").appendTo(_this.appendTo); - _this.resultsWidth = clone.find('.member-select-results').outerWidth(); - clone.remove(); - _this.eventEmitter.publish("manifestPanelWidthChanged", _this.resultsWidth); - }, - - onPanelVisible: function(_, stateValue) { - var _this = this; - if (stateValue) { _this.show(); return; } - _this.hide(); - }, - - // Handler for when manifest data is loaded for the first time - onManifestReceived: function(event, newManifest) { - var _this = this; - // Show a manifest list item only if the currently selected "folder" expects it - if (_this.expectedThings.indexOf(newManifest.uri) != -1) { - _this.manifestListItems.push(new $.ManifestListItem({ - manifest: newManifest, - resultsWidth: _this.resultsWidth, - state: _this.state, - eventEmitter: _this.eventEmitter, - forcedIndex: _this.expectedThings.indexOf(newManifest.uri), - appendTo: _this.manifestListElement })); - _this.element.find('#manifest-search').keyup(); - } - }, - - // Handler for when collection data is loaded for the first time - onCollectionReceived: function(event, newCollection, uri, parentNodeId) { - // If the tree isn't ready, hold it and move on - if (typeof this.treeQueue !== 'undefined') { - this.treeQueue.push([event, newCollection, uri, parentNodeId]); - return; - } - // Update nodes if the target isn't top; create new node if the target is top - if (parentNodeId) { - this.updateCollectionNode(parentNodeId, newCollection); - } else { - this.addCollectionNode(parentNodeId, newCollection); - } - }, - - // Handler for when collection data is loaded for the first time and failed - onCollectionNotReceived: function(event, uri, parentNodeId) { - // If the tree isn't ready, hold it and move on - if (typeof this.treeQueue !== 'undefined') { - this.treeQueue.push([event, uri, parentNodeId]); - return; - } - // Mark the child node belonging to this as a fail - var _this = this; - jQuery.each(this.uriToNodeId[uri], function(_, nodeId) { - _this.treeElement.jstree('set_icon', nodeId, 'fa fa-ban'); // Set icon to (/) - _this.treeElement.jstree('disable_node', nodeId); // Don't let the user click it - }); - }, - - // Clean out the list of manifest items on the right side - clearManifestItems: function() { - this.manifestListItems = []; - this.manifestListElement.html(''); - }, - - // Set up 2-way correspondence between node IDs and URIs - registerNodeIdUriPair: function(nodeId, uri) { - // Map node ID to URI - this.nodeIdToUri[nodeId] = uri; - if (this.uriToNodeId[uri]) { - this.uriToNodeId[uri].push(nodeId); // Existing URI => new node ID - } else { - this.uriToNodeId[uri] = [nodeId]; // New URI => new node ID - } - }, - - // Handler for selecting a new node - changeNode: function(node) { - var _this = this; - // Clean out manifest items on the right side - this.clearManifestItems(); - // Listen in on manifests in the "folder" or collection it represents - switch (node.id) { - case 'preload': _this.expectedThings = _this.preloadedManifests; break; - case 'user': _this.expectedThings = _this.userManifests; break; - default: _this.expectedThings = _this.nodeManifests[node.id]; break; - } - // Populate and refresh the manifests listings - jQuery.each(_this.expectedThings, function(_, expectedThing) { - _this.addManifestFromUrl(expectedThing); - }); - this.element.find('#manifest-search').keyup(); - - }, - - // Handler for expanding a node (> clicked) - expandNode: function(node) { - var _this = this; - // Update its children by loading their stated URIs - jQuery.each(_this.nodeCollections[node.id], function(_, uri) { - _this.updateCollectionFromUrl(uri, node.id); - }); - }, - - // Helper for loading a manifest or collection from a URL - addObjectFromUrl: function(url, source) { - var _this = this, - object = _this.state.getStateProperty('manifests')[url]; // Attempt to get from cache - // Cache hit - if (object) { - // Fire off the correct event if its cache entry is loaded - if (object.jsonLd) { - switch (object.jsonLd['@type']) { - case 'sc:Collection': - _this.eventEmitter.publish('ADD_COLLECTION_FROM_URL', [url, source]); - break; - case 'sc:Manifest': - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [url, source]); - break; - } - } - } - // Cache miss - else { - // Get the manifest or collection with AJAX - jQuery.ajax({ - url: url, - dataType: 'json', - type: 'GET', - // Fire off the correct event once it finishes loading - success: function(data) { - switch (data['@type']) { - case 'sc:Collection': - object = new $.Collection(url, source, data); - _this.eventEmitter.publish('manifestQueued', object, ''); - _this.eventEmitter.publish('ADD_COLLECTION_FROM_URL', [url, source]); - break; - case 'sc:Manifest': - object = new $.Manifest(url, source, data); - _this.eventEmitter.publish('manifestQueued', object, ''); // Use the state manager's manifest caching to store collections too - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [url, source]); - break; - } - } - }); - } - }, - - // Helper for loading a manifest from a URL - addManifestFromUrl: function(url) { - var _this = this, - manifest; - // Cache hit: Show the manifest panel item if it is loaded - if (_this.state.getStateProperty('manifests')[url]) { - manifest = _this.state.getStateProperty('manifests')[url]; - if (manifest.jsonLd) { - _this.manifestListItems.push(new $.ManifestListItem({ - manifest: manifest, - resultsWidth: _this.resultsWidth, - state: _this.state, - eventEmitter: _this.eventEmitter, - forcedIndex: _this.expectedThings.indexOf(url), - appendTo: _this.manifestListElement })); - } - } - // Cache miss: Queue the loading and defer the received event until it is done - else { - manifest = new $.Manifest(url, ''); - _this.eventEmitter.publish('manifestQueued', manifest, ''); - manifest.request.done(function() { - _this.eventEmitter.publish('manifestReceived', manifest); - }); - } - }, - - // Helper for loading a manifest from a URL as a child node of some other node (null = top level) - // Optionally, jump to that new child node if jumpToIt is specified as true - addCollectionFromUrl: function(url, nodeId, jumpToIt) { - var _this = this, - collection; - // Is it adding to the top level? - if (!nodeId) { - // Pass if it is already loaded - if (_this.topCollectionsUris[url]) { - return; - } - // Otherwise, make note of it - else { - _this.topCollectionsUris[url] = true; - } - } - // Cache hit: Add the node right away if it is loaded - if (typeof _this.state.getStateProperty('manifests')[url] !== 'undefined') { - collection = _this.state.getStateProperty('manifests')[url]; - if (collection.jsonLd) { - var newNode = _this.addCollectionNode(nodeId, collection); - // Also jump to the node if specified - if (jumpToIt) { - _this.treeElement.jstree('deselect_all'); - _this.treeElement.jstree('select_node', newNode); - // Expand the node if it has children - if (collection.getCollectionUris().length > 0) { - _this.treeElement.jstree('open_node', newNode); - } - } - } - } - // Cache miss: Queue the loading and defer the received event until it is done or failed - else { - collection = new $.Collection(url, ''); - _this.eventEmitter.publish('manifestQueued', collection, ''); // Use the state manager's manifest caching to store collections too - collection.request.done(function() { - _this.eventEmitter.publish('collectionReceived', [collection, url, nodeId ? nodeId : null]); - }); - collection.request.fail(function() { - _this.eventEmitter.publish('collectionNotReceived', [url, nodeId ? nodeId : null]); - }); - } - }, - - // Helper for updating a subnode of nodeId corresponding to the specified URL - updateCollectionFromUrl: function(url, nodeId) { - var _this = this, - collection; - // Cache hit: Get the collection object and update right away - if (typeof _this.state.getStateProperty('manifests')[url] !== 'undefined') { - collection = _this.state.getStateProperty('manifests')[url]; - if (collection.jsonLd) { - _this.updateCollectionNode(nodeId, collection); - } - } - // Cache miss: Queue the loading and defer the received event until it is done or failed - else { - collection = new $.Collection(url, ''); - _this.eventEmitter.publish('manifestQueued', collection, ''); // Use the state manager's manifest caching to store collections too - collection.request.done(function() { - _this.eventEmitter.publish('collectionReceived', [collection, url, nodeId ? nodeId : null]); - }); - collection.request.fail(function() { - _this.eventEmitter.publish('collectionNotReceived', [url, nodeId ? nodeId : null]); - }); - } - }, - - // Helper for loading a Collection object as a child of nodeId - // Optionally, skip seeding subnodes under this collection if unexpanded is specified; this marks it as "still loading" - addCollectionNode: function(nodeId, collection, unexpanded) { - var _this = this, - subcollectionBlocks = collection.getCollectionBlocks(); - // Add the new node - var newNodeId = _this.treeElement.jstree('create_node', nodeId ? nodeId : null, { - text: collection.jsonLd.label, - icon: unexpanded ? 'fa fa-spinner fa-pulse' : 'fa fa-folder', // Unexpanded = still loading, expanded = loaded - children: [] - }, 'last'); - // Don't let nodes that are still loading be selected - if (unexpanded) { - _this.treeElement.jstree('disable_node', newNodeId); - } - // Register the new node's apparent contents - _this.registerNodeIdUriPair(newNodeId, collection.jsonLd['@id']); - _this.nodeCollections[newNodeId] = collection.getCollectionUris(); - _this.nodeManifests[newNodeId] = collection.getManifestUris(); - _this.nodeChildren[newNodeId] = []; - // Add subcollections if unexpanded is not specified - if (!unexpanded) { - jQuery.each(subcollectionBlocks, function(i, v) { - // Create the subnode - var nid = _this.treeElement.jstree('create_node', newNodeId, { - text: v.label, - icon: 'fa fa-spinner fa-pulse', - children: [] - }, 'last'); - // Register the subnode's apparent contents - _this.registerNodeIdUriPair(nid, v['@id']); - _this.unexpandedNodes[nid] = true; - _this.nodeChildren[newNodeId].push(nid); - // Don't let it be selected yet - _this.treeElement.jstree('disable_node', nid); - }); - } - // If unexpanded is specified, mark this node as requiring expansion later - else { - _this.unexpandedNodes[newNodeId] = true; - } - // Return newly created node ID for future reference - return newNodeId; - }, - - // Helper for updating a subnode of nodeId corresponding to the specified URL - updateCollectionNode: function(nodeId, collection) { - var _this = this, - atId = collection.uri, - collectionBlocks = collection.getCollectionBlocks(), - collectionUris = collection.getCollectionUris(), - manifestUris = collection.getManifestUris(); - // Find the right node to update that corresponds to the collection's URI - jQuery.each(_this.nodeChildren[nodeId], function(_, n) { - if (_this.nodeIdToUri[n] == atId && _this.unexpandedNodes[n]) { - // Register the node's contents - _this.nodeCollections[n] = collectionUris; - _this.nodeManifests[n] = manifestUris; - _this.nodeChildren[n] = []; - // Add children under the node if it has any subcollections, but don't expand them yet - jQuery.each(collectionBlocks, function(i, v) { - var nn = _this.addCollectionNode(n, new $.Collection(v['@id'], null, v), true); - _this.nodeChildren[n].push(nn); - _this.unexpandedNodes[nn] = true; - }); - // This node is already expanded, unmark it - delete _this.unexpandedNodes[n]; - // Change its icon to a folder and allow it to be selected - _this.treeElement.jstree('set_icon', n, 'fa fa-folder'); - _this.treeElement.jstree('enable_node', n); - } - }); - - }, - - template: $.Handlebars.compile([ - '<div id="manifest-select-menu">', - '<div class="container">', - '<div class="manifest-panel-controls">', - '<a class="remove-object-option"><i class="fa fa-times fa-lg fa-fw"></i>{{t "close"}}</a>', - '<div id="load-controls">', - '{{#if showURLBox}}', - '<form action="" id="url-load-form">', - '<label for="url-loader">{{t "addNewObject"}}:</label>', - '<input type="text" id="url-loader" name="url-load" placeholder="https://...">', - '<input type="submit" value="{{t "load"}}">', - '</form>', - '{{/if}}', - '<form action="" id="manifest-search-form">', - '<label for="manifest-search">{{t "filterObjects"}}:</label>', - '<input id="manifest-search" type="text" name="manifest-filter">', - '</form>', - '</div>', - '</div>', - '<div id="collection-tree">', - '</div>', - '<div class="member-select-results">', - '<ul class="items-listing">', - '</ul>', - '</div>', - '</div>', - '</div>' - ].join('')) - }; - -}(Mirador)); - diff --git a/js/src/viewer/mainMenu.js b/js/src/viewer/mainMenu.js deleted file mode 100644 index 1e87852ee188008761cf24781686a8a4cd774222..0000000000000000000000000000000000000000 --- a/js/src/viewer/mainMenu.js +++ /dev/null @@ -1,259 +0,0 @@ -(function($) { - - $.MainMenu = function(options) { - - jQuery.extend(true, this, { - element: null, - mainMenuHeight: null, - mainMenuWidth: null, - windowOptionsMenu: null, - loadWindow: null, - clearLocalStorage: '', - viewerCls: 'mirador-viewer', - mainMenuBarCls: 'mirador-main-menu-bar', - mainMenuCls: 'mirador-main-menu', - windowOptionsMenuCls: 'mirador-window-options-menu', - clearLocalStorageCls: 'clear-local-storage', - clearLocalStorageDialogCls: 'mirador-main-menu-clear-local-storage', - collectionsListingCls: 'mirador-listing-collections', - state: null, - eventEmitter: null - }, options); - - this.element = this.element || jQuery('<div/>'); - - this.init(); - - }; - - - $.MainMenu.prototype = { - - init: function() { - //this.mainMenuHeight = this.parent.mainMenuSettings.height; - //this.mainMenuWidth = this.parent.mainMenuSettings.width; - this.element - .addClass(this.mainMenuBarCls) - //.height(this.mainMenuHeight) - //.width(this.mainMenuWidth) - .appendTo(this.appendTo); - - this.element.append(this.template({ - mainMenuCls: this.mainMenuCls, - showBookmark : this.state.getStateProperty('mainMenuSettings').buttons.bookmark, - showLayout : this.state.getStateProperty('mainMenuSettings').buttons.layout, - showOptions: this.state.getStateProperty('mainMenuSettings').buttons.options, - showFullScreenViewer : this.state.getStateProperty('mainMenuSettings').buttons.fullScreenViewer, - userButtons: this.state.getStateProperty('mainMenuSettings').userButtons, - userLogo: this.state.getStateProperty('mainMenuSettings').userLogo - })); - - this.element.find('.mainmenu-button').each(function() { - jQuery(this).qtip({ - content: { - text: jQuery(this).attr('title'), - }, - position: { - my: 'top center', - at: 'bottom center' - }, - style: { - classes: 'qtip-dark qtip-shadow qtip-rounded' - }, - }); - }); - - this.listenForActions(); - this.bindEvents(); - }, - - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('MAINMENU_FULLSCREEN_BUTTON', function(event) { - var fullScreenButton = _this.element.find('.fullscreen-viewer span'); - if (fullScreenButton.hasClass('fa-expand')) { - fullScreenButton.removeClass('fa-expand').addClass('fa-compress'); - } else { - fullScreenButton.removeClass('fa-compress').addClass('fa-expand'); - } - }); - }, - - bindEvents: function() { - var _this = this; - //change 'change-layout' to mouseover events rather than click? - this.element.find('.change-layout').on('click', function() { - _this.eventEmitter.publish('TOGGLE_WORKSPACE_PANEL'); - //remove active class from other buttons - _this.element.find('.bookmark-workspace').removeClass('active'); - if (jQuery(this).hasClass('active')) { - jQuery(this).removeClass('active'); - } else { - jQuery(this).addClass('active'); - } - }); - - this.element.find('.bookmark-workspace').on('click', function() { - _this.eventEmitter.publish('TOGGLE_BOOKMARK_PANEL'); - //remove active class from other buttons - _this.element.find('.change-layout').removeClass('active'); - if (jQuery(this).hasClass('active')) { - jQuery(this).removeClass('active'); - } else { - jQuery(this).addClass('active'); - } - }); - - // when options are implemented, this will need to do something - this.element.find('.window-options').on('click', function() { }); - this.element.find('.fullscreen-viewer').on('click', function() { - _this.eventEmitter.publish('TOGGLE_FULLSCREEN'); - }); - }, - - template: $.Handlebars.compile([ - '{{#if userLogo}}', - '<ul class="user-logo {{mainMenuCls}}">', - '{{userlogo userLogo}}', - '</ul>', - '{{/if}}', - '<ul class="{{mainMenuCls}}">', - '{{#if showBookmark}}', - '<li>', - '<a href="javascript:;" class="bookmark-workspace mainmenu-button" title="{{t "bookmarkTooltip"}}" aria-label="{{t "bookmarkTooltip"}}">', - '<span class="fa fa-bookmark fa-lg fa-fw"></span> {{t "bookmark"}}', - '</a>', - '</li>', - '{{/if}}', - /*'{{#if showOptions}}', - '<li>', - '<a href="javascript:;" class="window-options" title="Window Options">', - '<span class=""></span>Options', - '</a>', - '</li>', - '{{/if}}',*/ - '{{#if showLayout}}', - '<li>', - '<a href="javascript:;" class="change-layout mainmenu-button" title="{{t "changeLayoutTooltip"}}" aria-label="{{t "changeLayoutTooltip"}}">', - '<span class="fa fa-th-large fa-lg fa-fw"></span> {{t "changeLayout"}}', - '</a>', - '</li>', - '{{/if}}', - '{{#if showFullScreenViewer}}', - '<li>', - '<a href="javascript:;" class="fullscreen-viewer mainmenu-button" title="{{t "fullScreenTooltip"}}" aria-label="{{t "fullScreenTooltip"}}">', - '<span class="fa fa-expand fa-lg fa-fw"></span> {{t "fullScreen"}}', - '</a>', - '</li>', - '{{/if}}', - '</ul>', - '{{#if userButtons}}', - '{{userbtns userButtons}}', - '{{/if}}' - ].join('')) - }; - - /* Helper methods for processing userButtons provided in configuration */ - - /* Processes userButtons configuration setting * - **************************************************** - * userButtons, if present, should be an array * - * * - * Its elements should be objects, which can * - * have the following attributes: * - * * - * label: text label assigned to the link * - * created. (required) * - * attributes: HTML attributes to add to the * - * button. If there is a "callback" * - * attribute for the button, this MUST * - * exist and MUST contain an "id" value * - * li_attributes: HTML attributes to add to the * - * list item containing the button. * - * iconClass: class or space-separated list of * - * classes. If present, an empty span with * - * these classes will be prepended to the * - * content of the link element - * sublist: Sublist of buttons, to be implemented * - * as a dropdown via CSS/JS * - * ul_attributes: HTML attributes to add to the * - * sublist UL contained in the button. * - * Ignored if button isn't representing * - * a sublist. * - * * - * NOTE: sublist dropdown functionality is not yet * - * implemented * - ****************************************************/ - var processUserButtons = function (btns) { - var output = []; - var btn; - var btns_len = btns.length; - - for (var i = 0; i < btns_len; i++){ - output.push(processUserBtn(btns[i])); - } - return output; - }; - - var processUserBtn = function (btn) { - var $li = jQuery('<li>'); - var $a = jQuery('<a>'); - var $sub_ul; - - try { - /* Enclosing <li> for button */ - if (btn.li_attributes){ - $li.attr(btn.li_attributes); - } - - /* Link for button. */ - if (!btn.label) { - throw "userButtons must have labels"; - } - - $a.text(btn.label); - - if (btn.iconClass) { - $a.prepend('<span class="' + btn.iconClass + '"></span> '); - } - - if (btn.attributes){ - $a.attr(btn.attributes); - } - - $li.append($a); - - /* Sublist if present */ - if (btn.sublist) { - $sub_ul = jQuery('<ul>'); - if (btn.ul_attributes){ - $sub_ul.attr(btn.ul_attributes); - } - /* Recurse! */ - $sub_ul.append(processUserButtons(btn.sublist)); - - $li.append($sub_ul); - } - - return $li; - } - catch (err) { - console && console.log && console.log(err); - return jQuery(); - } - }; - - $.Handlebars.registerHelper('userbtns', function (userButtons) { - return new $.Handlebars.SafeString( - jQuery('<ul class="user-buttons ' + this.mainMenuCls +'"></ul>').append(processUserButtons(userButtons)).get(0).outerHTML - ); - }); - - $.Handlebars.registerHelper('userlogo', function (userLogo) { - return new $.Handlebars.SafeString( - processUserBtn(userLogo).get(0).outerHTML - ); - }); - -}(Mirador)); diff --git a/js/src/viewer/manifestListItem.js b/js/src/viewer/manifestListItem.js deleted file mode 100644 index f55c7391dd8a6cd1553da31ba33a20a56c809b2d..0000000000000000000000000000000000000000 --- a/js/src/viewer/manifestListItem.js +++ /dev/null @@ -1,289 +0,0 @@ -(function($) { - - $.ManifestListItem = function(options) { - - jQuery.extend(true, this, { - element: null, - appendTo: null, - manifest: null, - loadStatus: null, - thumbHeight: 80, - urlHeight: 150, - resultsWidth: 0, // based on screen width - maxPreviewImagesWidth: 0, - repoWidth: 80, - metadataWidth: 450, - margin: 15, - remainingWidth: 20, - imagesTotalWidth: 0, - tplData: null, - allImages: [], - remaining: 0, - forcedIndex: null, - state: null, - eventEmitter: null - }, options); - - this.init(); - - }; - - $.ManifestListItem.prototype = { - - init: function() { - var _this = this; - //need a better way of calculating this because JS can't get width and margin of hidden elements, so must manually set that info - //ultimately use 95% of space available, since sometimes it still displays too many images - this.maxPreviewImagesWidth = this.resultsWidth - (this.repoWidth + this.margin + this.metadataWidth + this.margin + this.remainingWidth); - this.maxPreviewImagesWidth = this.maxPreviewImagesWidth * 0.95; - - $.Handlebars.registerHelper('pluralize', function(count, singular, plural) { - if (count === 1) { - return singular; - } else { - return plural; - } - }); - - this.fetchTplData(this.manifestId); - if (this.forcedIndex !== null) { - this.tplData.index = this.forcedIndex; - } - - if (_this.state.getStateProperty('preserveManifestOrder')) { - if (this.appendTo.children().length === 0) { - this.element = jQuery(this.template(this.tplData)).prependTo(this.appendTo).hide().fadeIn('slow'); - } else { - var liList = _this.appendTo.find('li'); - jQuery.each(liList, function(index, item) { - var prev = parseFloat(jQuery(item).attr('data-index-number')); - var next = parseFloat(jQuery(liList[index+1]).attr('data-index-number')); - var current = _this.tplData.index; - if (current <= prev && (next > current || isNaN(next)) ) { - _this.element = jQuery(_this.template(_this.tplData)).insertBefore(jQuery(item)).hide().fadeIn('slow'); - return false; - } else if (current > prev && (current < next || isNaN(next))) { - _this.element = jQuery(_this.template(_this.tplData)).insertAfter(jQuery(item)).hide().fadeIn('slow'); - return false; - } - }); - } - } else { - this.element = jQuery(this.template(this.tplData)).prependTo(this.appendTo).hide().fadeIn('slow'); - } - - this.bindEvents(); - this.listenForActions(); - }, - - fetchTplData: function() { - var _this = this, - location = _this.manifest.location, - manifest = _this.manifest.jsonLd; - - this.tplData = { - label: $.JsonLd.getTextValue(manifest.label), - repository: location, - canvasCount: manifest.sequences[0].canvases.length, - images: [], - index: _this.state.getManifestIndex(manifest['@id']) - }; - - this.tplData.repoImage = (function() { - var repo = _this.tplData.repository; - if (manifest.logo) { - if (typeof manifest.logo === "string") - return manifest.logo; - if (typeof manifest.logo['@id'] !== 'undefined') - return manifest.logo['@id']; - } - return ''; - })(); - - for ( var i=0; i < manifest.sequences[0].canvases.length; i++) { - var canvas = manifest.sequences[0].canvases[i]; - if (canvas.width === 0) { - continue; - } - - var aspectRatio = canvas.height/canvas.width, - width = (_this.thumbHeight/aspectRatio); - var url = _this.manifest.getThumbnailForCanvas(canvas, width); - - _this.allImages.push({ - url: url, - width: width, - height: _this.thumbHeight, - id: canvas['@id'], - index: i - }); - } - - jQuery.each(_this.allImages, function(index, value) { - var width = value.width; - - _this.imagesTotalWidth += (width + _this.margin); - if (_this.imagesTotalWidth >= _this.maxPreviewImagesWidth) { - // outsized image will inherited - if (value.width > _this.maxPreviewImagesWidth) { - _this.tplData.images.push(value); - } - _this.imagesTotalWidth -= (width + _this.margin); - return false; - } - _this.tplData.images.push(value); - }); - - _this.remaining = this.tplData.remaining = (function() { - var remaining = _this.allImages.length - _this.tplData.images.length; - if (remaining > 0) { - return remaining; - } - })(); - - }, - - render: function() { - - }, - - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('manifestPanelWidthChanged', function(event, newWidth){ - _this.updateDisplay(newWidth); - }); - }, - - bindEvents: function() { - var _this = this; - - this.element.find('img').on('load', function() { - //if img width is not equal to the width in the html, change height - jQuery(this).hide().fadeIn(600); - }); - - this.element.on('click', function() { - var windowConfig = { - manifest: _this.manifest, - canvasID: null, - viewType: 'ThumbnailsView' - }; - _this.eventEmitter.publish('ADD_WINDOW', windowConfig); - }); - - this.element.find('.preview-image').on('click', function(e) { - e.stopPropagation(); - var windowConfig = { - manifest: _this.manifest, - canvasID: jQuery(this).attr('data-image-id'), - viewType: _this.state.getStateProperty('windowSettings').viewType //get the view type from settings rather than always defaulting to ImageView - }; - _this.eventEmitter.publish('ADD_WINDOW', windowConfig); - }); - }, - - updateDisplay: function(newWidth) { - var _this = this, - newMaxPreviewWidth = newWidth - (_this.repoWidth + _this.margin + _this.metadataWidth + _this.margin + _this.remainingWidth); - newMaxPreviewWidth = newMaxPreviewWidth * 0.95; - var image = null; - - //width of browser window has been made smaller - if (newMaxPreviewWidth < _this.maxPreviewImagesWidth ) { - while (_this.imagesTotalWidth >= newMaxPreviewWidth) { - image = _this.tplData.images.pop(); - - if (image) { - _this.imagesTotalWidth -= (image.width + _this.margin); - - //remove image from dom - _this.element.find('img[data-image-id="'+image.id+'"]').remove(); - } else { - break; - } - } - //check if need to add ellipsis - if (_this.remaining === 0 && _this.allImages.length - _this.tplData.images.length > 0) { - _this.element.find('.preview-images').after('<i class="fa fa fa-ellipsis-h remaining"></i>'); - } - _this.remaining = _this.allImages.length - _this.tplData.images.length; - - } else if (newMaxPreviewWidth > _this.maxPreviewImagesWidth) { - //width of browser window has been made larger - var currentLastImage = _this.tplData.images[_this.tplData.images.length-1], - index = currentLastImage ? currentLastImage.index+1 : 0; - - image = _this.allImages[index]; - - if (image) { - while (_this.imagesTotalWidth + image.width + _this.margin < newMaxPreviewWidth) { - _this.tplData.images.push(image); - _this.imagesTotalWidth += (image.width + _this.margin); - - //add image to dom - _this.element.find('.preview-images').append('<img src="'+image.url+'" width="'+image.width+'" height="'+image.height+'" class="preview-image flash" data-image-id="'+image.id+'">'); - - //get next image - index++; - image = _this.allImages[index]; - if (!image) { - break; - } - } - //check if need to remove ellipsis - if (_this.remaining > 0 && _this.allImages.length - _this.tplData.images.length === 0) { - _this.element.find('.remaining').remove(); - } - _this.remaining = _this.allImages.length - _this.tplData.images.length; - } - } - _this.maxPreviewImagesWidth = newMaxPreviewWidth; - _this.eventEmitter.publish('manifestListItemRendered'); - }, - - hide: function() { - var _this = this; - }, - - show: function() { - var _this = this; - }, - - template: $.Handlebars.compile([ - '<li data-index-number={{index}}>', - '<div class="repo-image">', - '{{#if repoImage}}', - '<img src="{{repoImage}}" alt="repoImg">', - '{{else}}', - '<span class="default-logo"></span>', - '{{/if}}', - '</div>', - '<div class="select-metadata">', - '<div class="manifest-title">', - '<h3 title="{{{label}}}">{{{label}}}</h3>', - '</div>', - '<div class="item-info">', - '<div class="item-info-row">', - '{{#if repository}}', - '<div class="repo-label">{{repository}}</div>', - '{{/if}}', - '<div class="canvas-count">{{canvasCount}} {{pluralize canvasCount (t "item") (t "items")}}</div>', - '</div>', - '</div>', - '</div>', - '<div class="preview-thumb">', - '<div class="preview-images">', - '{{#each images}}', - '<img src="{{url}}" width="{{width}}" height="{{height}}" class="preview-image flash" data-image-id="{{id}}">', - '{{/each}}', - '</div>', - '{{#if remaining}}', - '<i class="fa fa fa-ellipsis-h remaining"></i>', - '{{/if}}', - '</div>', - '</li>' - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/viewer/manifestsPanel.js b/js/src/viewer/manifestsPanel.js deleted file mode 100644 index 47e1c250900cbb3272b13d029bde49192ad18af5..0000000000000000000000000000000000000000 --- a/js/src/viewer/manifestsPanel.js +++ /dev/null @@ -1,182 +0,0 @@ -(function($) { - - $.ManifestsPanel = function(options) { - - jQuery.extend(true, this, { - element: null, - listItems: null, - appendTo: null, - manifestListItems: [], - manifestListElement: null, - manifestLoadStatusIndicator: null, - resultsWidth: 0, - state: null, - eventEmitter: null - }, options); - - var _this = this; - _this.init(); - - }; - - $.ManifestsPanel.prototype = { - - init: function() { - this.element = jQuery(this.template({ - showURLBox : this.state.getStateProperty('showAddFromURLBox') - })).appendTo(this.appendTo); - this.manifestListElement = this.element.find('ul'); - - //this code gives us the max width of the results area, used to determine how many preview images to show - //cloning the element and adjusting the display and visibility means it won't break the normal flow - var clone = this.element.clone().css("visibility","hidden").css("display", "block").appendTo(this.appendTo); - this.resultsWidth = clone.find('.select-results').outerWidth(); - this.controlsHeight = clone.find('.manifest-panel-controls').outerHeight(); - this.paddingListElement = this.controlsHeight; - this.manifestListElement.css("padding-bottom", this.paddingListElement); - clone.remove(); - - // this.manifestLoadStatusIndicator = new $.ManifestLoadStatusIndicator({ - // manifests: this.parent.manifests, - // appendTo: this.element.find('.select-results') - // }); - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function() { - var _this = this; - - // handle subscribed events - _this.eventEmitter.subscribe('manifestsPanelVisible.set', function(_, stateValue) { - _this.onPanelVisible(_, stateValue); - }); - - _this.eventEmitter.subscribe('manifestReceived', function(event, newManifest) { - _this.onManifestReceived(event, newManifest); - }); - - _this.eventEmitter.subscribe('collectionReceived', function(event, newCollection) { - _this.onCollectionReceived(event, newCollection); - }); - }, - - bindEvents: function() { - var _this = this; - - // handle interface events - this.element.find('form#url-load-form').on('submit', function(event) { - event.preventDefault(); - _this.addManifestUrl(jQuery(this).find('input').val()); - }); - - this.element.find('.remove-object-option').on('click', function(event) { - _this.togglePanel(event); - }); - - // Filter manifests based on user input - this.element.find('#manifest-search').on('keyup input', function(event) { - _this.filterManifests(this.value); - }); - - this.element.find('#manifest-search-form').on('submit', function(event) { - event.preventDefault(); - }); - - jQuery(window).resize($.throttle(function() { - _this.resizePanel(); - }, 50, true)); - }, - - hide: function() { - var _this = this; - jQuery(this.element).hide({effect: "fade", duration: 160, easing: "easeOutCubic"}); - }, - - show: function() { - var _this = this; - jQuery(this.element).show({effect: "fade", duration: 160, easing: "easeInCubic"}); - }, - - addManifestUrl: function(url) { - var _this = this; - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [url, "(Added from URL)"]); - }, - - togglePanel: function(event) { - var _this = this; - _this.eventEmitter.publish('TOGGLE_LOAD_WINDOW'); - }, - - filterManifests: function(value) { - var _this = this; - if (value.length > 0) { - _this.element.find('.items-listing li').show().filter(function() { - return jQuery(this).text().toLowerCase().indexOf(value.toLowerCase()) === -1; - }).hide(); - } else { - _this.element.find('.items-listing li').show(); - } - }, - - resizePanel: function() { - var _this = this; - var clone = _this.element.clone().css("visibility","hidden").css("display", "block").appendTo(_this.appendTo); - _this.resultsWidth = clone.find('.select-results').outerWidth(); - clone.remove(); - _this.eventEmitter.publish("manifestPanelWidthChanged", _this.resultsWidth); - }, - - onPanelVisible: function(_, stateValue) { - var _this = this; - if (stateValue) { _this.show(); return; } - _this.hide(); - }, - - onManifestReceived: function(event, newManifest) { - var _this = this; - _this.manifestListItems.push(new $.ManifestListItem({ - manifest: newManifest, - resultsWidth: _this.resultsWidth, - state: _this.state, - eventEmitter: _this.eventEmitter, - appendTo: _this.manifestListElement })); - _this.element.find('#manifest-search').keyup(); - }, - - onCollectionReceived: function(event, newCollection) { - var _this = this; - jQuery.each(newCollection.getManifestUris(), function(_, v) { - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [v, newCollection.location]); - }); - }, - - template: $.Handlebars.compile([ - '<div id="manifest-select-menu">', - '<div class="container">', - '<div class="manifest-panel-controls">', - '<a class="remove-object-option"><i class="fa fa-times fa-lg fa-fw"></i>{{t "close"}}</a>', - '<div id="load-controls">', - '{{#if showURLBox}}', - '<form action="" id="url-load-form">', - '<label for="url-loader">{{t "addNewObject"}}:</label>', - '<input type="text" id="url-loader" name="url-load" placeholder="https://...">', - '<input type="submit" value="{{t "load"}}">', - '</form>', - '{{/if}}', - '<form action="" id="manifest-search-form">', - '<label for="manifest-search">{{t "filterObjects"}}:</label>', - '<input id="manifest-search" type="text" name="manifest-filter">', - '</form>', - '</div>', - '</div>', - '<div class="select-results">', - '<ul class="items-listing">', - '</ul>', - '</div>', - '</div>', - '</div>' - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/viewer/workspacePanel.js b/js/src/viewer/workspacePanel.js deleted file mode 100644 index ecabe43fdacbd071c2dc111b2cdb95841e2c4d1d..0000000000000000000000000000000000000000 --- a/js/src/viewer/workspacePanel.js +++ /dev/null @@ -1,137 +0,0 @@ -(function($) { - - $.WorkspacePanel = function(options) { - - jQuery.extend(true, this, { - element: null, - appendTo: null, - workspace: null, - state: null, - eventEmitter: null - }, options); - - this.init(); - - }; - - $.WorkspacePanel.prototype = { - init: function () { - var _this = this, - templateData = { - rows: $.layoutDescriptionFromGridString(_this.state.getStateProperty('workspacePanelSettings').maxColumns + 'x' + _this.state.getStateProperty('workspacePanelSettings').maxRows).children.map(function(column, rowIndex) { - column.columns = column.children.map(function(row, columnIndex) { - row.gridString = (rowIndex+1) + 'x' + (columnIndex+1); - return row; - }); - return column; - }) - }; - - this.element = jQuery(this.template(templateData)).appendTo(this.appendTo); - var backgroundImage = _this.state.getStateProperty('buildPath') + _this.state.getStateProperty('imagesPath') + 'debut_dark.png'; - this.element.css('background-image','url('+backgroundImage+')').css('background-repeat','repeat'); - - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function() { - var _this = this; - _this.eventEmitter.subscribe('workspacePanelVisible.set', function(_, stateValue) { - _this.onPanelVisible(_, stateValue); - }); - }, - - bindEvents: function() { - var _this = this; - - _this.element.find('.grid-item').on('click', function() { - var gridString = jQuery(this).data('gridstring'); - _this.select(gridString); - }); - - _this.element.find('.grid-item').on('mouseover', function() { - var gridString = jQuery(this).data('gridstring'); - _this.hover(gridString); - }); - - _this.element.find('.select-grid').on('mouseout', function() { - _this.reset(); - }); - }, - - select: function(gridString) { - var _this = this; - var layoutDescription = $.layoutDescriptionFromGridString(gridString); - _this.eventEmitter.publish('RESET_WORKSPACE_LAYOUT', {layoutDescription: layoutDescription}); - _this.eventEmitter.publish('TOGGLE_WORKSPACE_PANEL'); - }, - - hover: function(gridString) { - var _this = this, - highestRow = gridString.charAt(0), - highestColumn = gridString.charAt(2), - gridItems = _this.element.find('.grid-item'); - gridItems.removeClass('hovered'); - gridItems.filter(function(index) { - var gridString = jQuery(this).data('gridstring'); - var change = gridString.charAt(0) <= highestRow && gridString.charAt(2) <= highestColumn; - return change; - }).addClass('hovered'); - _this.element.find('.grid-instructions').hide(); - _this.element.find('.grid-text').text(gridString).show(); - }, - - reset: function() { - var _this = this; - _this.element.find('.grid-item').removeClass('hovered'); - _this.element.find('.grid-instructions').show(); - _this.element.find('.grid-text').hide(); - }, - - hide: function() { - jQuery(this.element).hide({effect: "fade", duration: 160, easing: "easeOutCubic"}); - }, - - show: function() { - var onComplete = function () { - // Under firefox $.show() used under display:none iframe does not change the display. - // This is workaround for https://github.com/IIIF/mirador/issues/929 - jQuery(this).css('display', 'block'); - }; - - jQuery(this.element).show({ - effect: "fade", duration: 160, easing: "easeInCubic", complete: onComplete - }); - }, - - onPanelVisible: function(_, stateValue) { - var _this = this; - if (stateValue) { _this.show(); return; } - _this.hide(); - }, - - template: $.Handlebars.compile([ - '<div id="workspace-select-menu">', - '<h1>{{t "changeLayout"}}</h1>', - '<h3 class="grid-text"></h3>', - '<h3 class="grid-instructions">{{t "selectGrid"}}</h3>', - '<div class="select-grid">', - '{{#each rows}}', - '<div class="grid-row">', - '{{#each columns}}', - '<a class="grid-item" data-gridString="{{gridString}}">', - '<div class="grid-icon"></div>', - '</a>', - '{{/each}}', - '</div>', - '{{/each}}', - '</div>', - // '<div class="preview-container">', - // '</div>', - '</div>' - ].join('')) - }; - -}(Mirador)); - diff --git a/js/src/widgets/annotationsLayer.js b/js/src/widgets/annotationsLayer.js deleted file mode 100755 index 2b5a19491b9bba5b2c9bd8f985506949f9231d5e..0000000000000000000000000000000000000000 --- a/js/src/widgets/annotationsLayer.js +++ /dev/null @@ -1,142 +0,0 @@ -(function($) { - - $.AnnotationsLayer = function(options) { - - jQuery.extend(true, this, { - annotationsList: null, - viewer: null, - drawTool: null, - selected: null, - hovered: null, - windowId: null, - mode: 'default', - element: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.AnnotationsLayer.DISPLAY_ANNOTATIONS = 'displayAnnotations'; - - $.AnnotationsLayer.prototype = { - - init: function() { - var _this = this; - _this.eventEmitter.unsubscribe(('modeChange.' + _this.windowId)); - _this.eventEmitter.unsubscribe(('slotLeave.' + _this.windowId)); - _this.eventEmitter.unsubscribe(('slotEnter.' + _this.windowId)); - - this.createStateMachine(); - this.createRenderer(); - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('modeChange.' + _this.windowId, function(event, modeName) { - _this.mode = modeName; - _this.modeSwitch(); - }); - - _this.eventEmitter.subscribe('annotationListLoaded.' + _this.windowId, function(event) { - _this.annotationsList = _this.state.getWindowAnnotationsList(_this.windowId); - _this.updateRenderer(); - }); - - _this.eventEmitter.subscribe('slotLeave.' + _this.windowId, function(event, eventData) { - if (_this.layerState.current == "display") { - _this.layerState.defaultState(); - _this.modeSwitch(); - } - }); - - _this.eventEmitter.subscribe('slotEnter.' + _this.windowId, function(event, eventData) { - if (_this.element.showAnno && _this.layerState.current == "display") { - _this.layerState.defaultState(); - _this.modeSwitch(); - } - }); - }, - - bindEvents: function() { - var _this = this; - }, - - createStateMachine: function() { - var _this = this; - this.layerState = StateMachine.create({ - events: [ - { name: 'startup', from: 'none', to: 'default' }, - { name: 'defaultState', from: ['default', 'display', 'create', 'edit'], to: 'default' }, - { name: 'displayAnnotations', from: ['default', 'display', 'create', 'edit', 'newShape'], to: 'display' }, - { name: 'createAnnotation', from: ['default','display'], to: 'create' }, - { name: 'createShape', from: 'edit', to: 'newShape'}, - { name: 'editAnnotation', from: ['default','display', 'newShape'], to: 'edit' } - ], - callbacks: { - onstartup: function(event) { - _this.drawTool.enterDefault(); - }, - ondefaultState: function(event) { - _this.drawTool.enterDefault(); - }, - ondisplayAnnotations: function(event) { - _this.drawTool.enterDisplayAnnotations(); - }, - oncreateAnnotation: function(event) { - _this.drawTool.enterCreateAnnotation(); - }, - oncreateShape: function(event) { - _this.drawTool.enterCreateShape(); - }, - oneditAnnotation: function(event) { - _this.drawTool.enterEditAnnotation(); - } - } - }); - }, - - createRenderer: function() { - var _this = this; - this.drawTool = new $.OsdRegionDrawTool({ - osdViewer: _this.viewer, - parent: _this, - list: _this.annotationsList, // must be passed by reference. - visible: false, - windowId: _this.windowId, - state: _this.state, - eventEmitter: _this.eventEmitter - }); - this.layerState.startup(); - }, - - updateRenderer: function() { - this.drawTool.list = this.annotationsList; - // this.modeSwitch(); - }, - - modeSwitch: function() { - if (this.mode === 'displayAnnotations') { - this.layerState.displayAnnotations(); - } - else if (this.mode === 'editingAnnotation') { - this.layerState.editAnnotation(); - } - else if (this.mode === 'creatingAnnotation') { - if (this.layerState.current !== 'edit') { - this.layerState.createAnnotation(); - } else { - this.layerState.createShape(); - } - } - else if (this.mode === 'default') { - this.layerState.defaultState(); - } - else {} - } - }; - -}(Mirador)); diff --git a/js/src/widgets/annotationsTab.js b/js/src/widgets/annotationsTab.js deleted file mode 100644 index f35bf99fd7c285229043ad5551e9b3ba857ad6aa..0000000000000000000000000000000000000000 --- a/js/src/widgets/annotationsTab.js +++ /dev/null @@ -1,207 +0,0 @@ -(function($) { - - $.AnnotationsTab = function(options) { - jQuery.extend(true, this, { - element: null, - appendTo: null, - manifest: null, - visible: null, - state: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.AnnotationsTab.prototype = { - init: function() { - var _this = this; - this.windowId = this.windowId; - - this.localState({ - id: 'annotationsTab', - visible: this.visible, - annotationLists: [], - selectedList: null, - empty: true, - focusedList: null - }, true); - - this.listenForActions(); - this.render(this.localState()); - this.loadTabComponents(); - this.bindEvents(); - }, - localState: function(state, initial) { - var _this = this; - if (!arguments.length) return this.annoTabState; - this.annoTabState = state; - - if (!initial) { - _this.eventEmitter.publish('annotationsTabStateUpdated.' + this.windowId, this.annoTabState); - } - - return this.annoTabState; - }, - loadTabComponents: function() { - var _this = this; - - }, - tabStateUpdated: function(visible) { - localState = this.localState(); - localState.visible = visible; - this.localState(localState); - visible ? this.element.show() : this.element.hide(); - }, - annotationListLoaded: function() { - var _this = this, - annotationSources = [], - localState = this.localState(); - jQuery.each(_this.state.getWindowAnnotationsList(_this.windowId), function(index, value) { - //loads annoations from external annotationLists - if(value.endpoint && typeof value.endpoint === 'string') { - annotationSources.push(value.resource); - } - else if (value.resource){ - //loads annoations from external annotationLists - if(value.resource.endpoint && typeof value.resource.endpoint === 'string') { - annotationSources.push(value.resource); - } - //loads annoations from local annotation endpoint - else { - annotationSources.push(value.resource[0]); - } - } - }); - // make unique - annotationSources = annotationSources.filter(function(itm,i,annotationSources){ - return i==annotationSources.indexOf(itm); - }); - - localState.annotationLists = annotationSources.map(function(annotationSource) { - //var s = (annotationSource === localState.selectedList ? true : false); - return { - annotationSource: annotationSource, - layer: null, - selected: (annotationSource === localState.selectedList ? true : false), - focused: false - }; - }); - - if(localState.annotationLists.length){ - localState.empty = false; - } - this.localState(localState); - }, - deselectList: function(listId) { - var _this = this; - var localState = this.localState(); - localState.selectedList = null; - localState.annotationLists.forEach(function(list){ list.selected = false; }); - this.localState(localState); - }, - selectList: function(listId) { - var _this = this; - var localState = this.localState(); - localState.selectedList = listId; - localState.annotationLists.forEach(function(list){ list.selected = list.annotationSource === listId ? true : false; }); - this.localState(localState); - }, - focusList: function(listId) { - var localState = this.localState(); - localState.focusedList = listId; - localState.annotationLists.forEach(function(list){ list.focused = list.annotationSource === listId ? true : false;}); - this.localState(localState); - }, - toggle: function() {}, - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('annotationsTabStateUpdated.' + _this.windowId, function(_, data) { - _this.render(data); - }); - - _this.eventEmitter.subscribe('tabStateUpdated.' + _this.windowId, function(_, data) { - _this.tabStateUpdated(data.tabs[data.selectedTabIndex].options.id == 'annotationsTab'); - }); - - - _this.eventEmitter.subscribe('annotationListLoaded.' + _this.windowId, function(_, data) { - _this.annotationListLoaded(); - }); - - _this.eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, function(event) { - - _this.eventEmitter.subscribe('annotationListLoaded.' + _this.windowId, function(event) { - _this.annotationListLoaded(); - }); - - _this.selectList(_this.localState().selectedList); - - }); - - _this.eventEmitter.subscribe('listSelected.' + _this.windowId, function(event, listId) { - _this.selectList(listId); - }); - - _this.eventEmitter.subscribe('listDeselected.' + _this.windowId, function(event, listId) { - _this.deselectList(listId); - }); - - }, - bindEvents: function() { - var _this = this, - listItems = this.element.find('.annotationListItem'); - - // listItems.on('click', function(event) { - // //event.stopImmediatePropagation(); - // var listClicked = jQuery(this).data('id'); - // if(_this.localState().selectedList === listClicked){ - // //_this.deselectList(listClicked); - // _this.eventEmitter.publish('listDeselected.' + _this.windowId, listClicked); - // }else{ - // //_this.selectList(listClicked); - // _this.eventEmitter.publish('listSelected.' + _this.windowId, listClicked); - // } - // - // }); - - }, - render: function(state) { - var _this = this, - templateData = { - annotationSources: state.annotationLists - }; - if (!this.element) { - this.element = jQuery(_this.template(templateData)).appendTo(_this.appendTo); - } else { - jQuery(_this.appendTo).find(".annotationsPanel").remove(); - this.element = jQuery(_this.template(templateData)).appendTo(_this.appendTo); - } - _this.bindEvents(); - - - if (state.visible) { - this.element.show(); - } else { - this.element.hide(); - } - }, - template: $.Handlebars.compile([ - '<div class="annotationsPanel">', - '<ul class="annotationSources">', - '{{#each annotationSources}}', - //'<li class="annotationListItem {{#if this.selected}}selected{{/if}} {{#if this.focused }}focused{{/if}}" data-id="{{this.annotationSource.chars}}">', - '<li class="annotationListItem" {{#if this.selected}}selected{{/if}} {{#if this.focused }}focused{{/if}}">', - '<span style="font-weight: bold">{{{this.annotationSource.label}}}</span>', - '<br/>', - '<span>{{{this.annotationSource.chars}}}</span>', - //'<span>{{this.annotationSource}}</span>', - '</li>', - '{{/each}}', - '</ul>', - '</div>', - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/widgets/bookView.js b/js/src/widgets/bookView.js deleted file mode 100755 index 8b67917dc759f496be2a6ce67248ad0f16dd638b..0000000000000000000000000000000000000000 --- a/js/src/widgets/bookView.js +++ /dev/null @@ -1,492 +0,0 @@ -(function($) { - - $.BookView = function(options) { - - jQuery.extend(this, { - currentImg: null, - windowId: null, - currentImgIndex: 0, - stitchList: [], - canvasID: null, - imagesList: [], - imagesListRtl: [], - element: null, - focusImages: [], - manifest: null, - viewingDirection: 'left-to-right', - viewingHint: 'paged', - osd: null, - osdCls: 'mirador-osd', - osdOptions: { - osdBounds: null, - zoomLevel: null - }, - stitchTileMargin: 10, - eventEmitter: null - }, options); - - this.init(); - }; - - - $.BookView.prototype = { - - init: function() { - var _this = this; - if(this.vDirectionStatus == 'rtl'){ - this.imagesList = this.imagesListRtl.concat(); - } - if (this.canvasID !== null) { - this.currentImgIndex = $.getImageIndexById(this.imagesList, this.canvasID); - } - - if (!this.osdOptions) { - this.osdOptions = { - osdBounds: null, - zoomLevel: null - }; - } - - this.currentImg = this.imagesList[this.currentImgIndex]; - - this.element = jQuery(this.template()).appendTo(this.appendTo); - - this.hud = new $.Hud({ - appendTo: this.element, - bottomPanelAvailable: this.bottomPanelAvailable, - windowId: this.windowId, - annotationLayerAvailable: false, - showNextPrev : this.imagesList.length !== 1, - eventEmitter: this.eventEmitter, - showAnno: false, - showImageControls: false - }); - - if (this.manifest.jsonLd.sequences[0].viewingDirection) { - this.viewingDirection = this.manifest.jsonLd.sequences[0].viewingDirection.toLowerCase(); - } - if (this.manifest.jsonLd.sequences[0].viewingHint) { - this.viewingHint = this.manifest.jsonLd.sequences[0].viewingHint.toLowerCase(); - } - - this.stitchList = this.getStitchList(); - this.createOpenSeadragonInstance(); - - this.bindEvents(); - this.listenForActions(); - - if (typeof this.bottomPanelAvailable !== 'undefined' && !this.bottomPanelAvailable) { - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, false); - } else { - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, null); - } - }, - - template: $.Handlebars.compile([ - '<div class="book-view">', - '</div>' - ].join('')), - - listenForActions: function() { - var _this = this, - firstCanvasId = _this.imagesList[0]['@id'], - lastCanvasId = _this.imagesList[_this.imagesList.length-1]['@id']; - - _this.eventEmitter.subscribe('bottomPanelSet.' + _this.windowId, function(event, visible) { - var dodgers = _this.element.find('.mirador-osd-toggle-bottom-panel, .mirador-pan-zoom-controls'); - var arrows = _this.element.find('.mirador-osd-next, .mirador-osd-previous'); - if (visible === true) { - dodgers.addClass('bottom-panel-open'); - arrows.addClass('bottom-panel-open'); - } else { - dodgers.removeClass('bottom-panel-open'); - arrows.removeClass('bottom-panel-open'); - } - }); - - _this.eventEmitter.subscribe('fitBounds.' + _this.windowId, function(event, bounds) { - var rect = _this.osd.viewport.imageToViewportRectangle(Number(bounds.x), Number(bounds.y), Number(bounds.width), Number(bounds.height)); - _this.osd.viewport.fitBoundsWithConstraints(rect, false); - }); - - _this.eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, function(event, canvasId) { - // If it is the first canvas, hide the "go to previous" button, otherwise show it. - if (canvasId === firstCanvasId) { - _this.element.find('.mirador-osd-previous').hide(); - _this.element.find('.mirador-osd-next').show(); - } else if (canvasId === lastCanvasId) { - _this.element.find('.mirador-osd-next').hide(); - _this.element.find('.mirador-osd-previous').show(); - } else { - _this.element.find('.mirador-osd-next').show(); - _this.element.find('.mirador-osd-previous').show(); - } - // If it is the last canvas, hide the "go to previous" button, otherwise show it. - }); - }, - - bindEvents: function() { - var _this = this; - - this.element.find('.mirador-osd-next').on('click', function() { - _this.next(); - }); - - this.element.find('.mirador-osd-previous').on('click', function() { - _this.previous(); - }); - - this.element.find('.mirador-osd-go-home').on('click', function() { - _this.osd.viewport.goHome(); - }); - - this.element.find('.mirador-osd-up').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(0, -panBy.y)); - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-right').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(panBy.x, 0)); - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-down').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(0, panBy.y)); - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-left').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(-panBy.x, 0)); - _this.osd.viewport.applyConstraints(); - }); - - this.element.find('.mirador-osd-zoom-in').on('click', function() { - var osd = _this.osd; - if ( osd.viewport ) { - osd.viewport.zoomBy( - osd.zoomPerClick / 1.0 - ); - osd.viewport.applyConstraints(); - } - }); - this.element.find('.mirador-osd-zoom-out').on('click', function() { - var osd = _this.osd; - if ( osd.viewport ) { - osd.viewport.zoomBy( - 1.0 / osd.zoomPerClick - ); - osd.viewport.applyConstraints(); - } - }); - - this.element.find('.mirador-osd-toggle-bottom-panel').on('click', function() { - _this.eventEmitter.publish('TOGGLE_BOTTOM_PANEL_VISIBILITY.' + _this.windowId); - }); - }, - - getPanByValue: function() { - var bounds = this.osd.viewport.getBounds(true); - //for now, let's keep 50% of the image on the screen - var panBy = { - "x" : bounds.width * 0.5, - "y" : bounds.height * 0.5 - }; - return panBy; - }, - - setBounds: function() { - var _this = this; - this.osdOptions.osdBounds = this.osd.viewport.getBounds(true); - _this.eventEmitter.publish("imageBoundsUpdated", { - id: _this.windowId, - osdBounds: { - x: _this.osdOptions.osdBounds.x, - y: _this.osdOptions.osdBounds.y, - width: _this.osdOptions.osdBounds.width, - height: _this.osdOptions.osdBounds.height - } - }); - }, - - toggle: function(stateValue) { - if (stateValue) { - this.show(); - } else { - this.hide(); - } - }, - - hide: function() { - jQuery(this.element).hide({effect: "fade", duration: 300, easing: "easeOutCubic"}); - }, - - show: function() { - jQuery(this.element).show({ - effect: "fade", duration: 300, easing: "easeInCubic", complete: function () { - // Under firefox $.show() used under display:none iframe does not change the display. - // This is workaround for https://github.com/IIIF/mirador/issues/929 - jQuery(this).css('display', 'block'); - } - }); - }, - - adjustWidth: function(className, hasClass) { - var _this = this; - if (hasClass) { - _this.eventEmitter.publish('REMOVE_CLASS.'+this.windowId, className); - } else { - _this.eventEmitter.publish('ADD_CLASS.'+this.windowId, className); - } - }, - - adjustHeight: function(className, hasClass) { - if (hasClass) { - this.element.removeClass(className); - } else { - this.element.addClass(className); - } - }, - - updateImage: function(canvasID) { - this.canvasID = canvasID; - this.currentImgIndex = $.getImageIndexById(this.imagesList, this.canvasID); - this.currentImg = this.imagesList[this.currentImgIndex]; - var newList = this.getStitchList(); - var is_same = this.stitchList.length == newList.length && this.stitchList.every(function(element, index) { - return element === newList[index]; - }); - if (!is_same) { - this.stitchList = newList; - this.osdOptions = { - osdBounds: null, - zoomLevel: null - }; - this.osd.close(); - this.createOpenSeadragonInstance(); - } - }, - - createOpenSeadragonInstance: function() { - var uniqueID = $.genUUID(), - osdId = 'mirador-osd-' + uniqueID, - osdToolBarId = osdId + '-toolbar', - elemOsd, - tileSources = [], - _this = this, - toolbarID = 'osd-toolbar-' + uniqueID, - dfd = jQuery.Deferred(); - - this.element.find('.' + this.osdCls).remove(); - - jQuery.each(this.stitchList, function(index, image) { - var imageUrl = $.Iiif.getImageUrl(image), - infoJsonUrl = imageUrl + '/info.json'; - - jQuery.getJSON(infoJsonUrl).done(function (data, status, jqXHR) { - tileSources.splice(index, 0, data); - if (tileSources.length === _this.stitchList.length ) { dfd.resolve(); } - }); - }); - - dfd.done(function () { - var aspectRatio = tileSources[0].height / tileSources[0].width; - - elemOsd = - jQuery('<div/>') - .addClass(_this.osdCls) - .attr('id', osdId) - .appendTo(_this.element); - - _this.osd = $.OpenSeadragon({ - 'id': elemOsd.attr('id'), - 'toolbarID' : toolbarID - }); - - // if (_this.state.getStateProperty('autoHideControls')) { - // var timeoutID = null, - // fadeDuration = _this.state.getStateProperty('fadeDuration'), - // timeoutDuration = _this.state.getStateProperty('timeoutDuration'); - // var hideHUD = function() { - // _this.element.find(".hud-control").stop(true, true).addClass('hidden', fadeDuration); - // }; - // hideHUD(); - // jQuery(_this.element).on('mousemove', function() { - // window.clearTimeout(timeoutID); - // _this.element.find(".hud-control").stop(true, true).removeClass('hidden', fadeDuration); - // timeoutID = window.setTimeout(hideHUD, timeoutDuration); - // }).on('mouseleave', function() { - // window.clearTimeout(timeoutID); - // hideHUD(); - // }); - // } - - _this.osd.addHandler('open', function(){ - _this.addLayer(tileSources.slice(1), aspectRatio); - var addItemHandler = function( event ) { - _this.osd.world.removeHandler( "add-item", addItemHandler ); - if (_this.osdOptions.osdBounds) { - var rect = new OpenSeadragon.Rect(_this.osdOptions.osdBounds.x, _this.osdOptions.osdBounds.y, _this.osdOptions.osdBounds.width, _this.osdOptions.osdBounds.height); - _this.osd.viewport.fitBounds(rect, true); - } else { - _this.osd.viewport.goHome(true); - } - }; - - if (_this.boundsToFocusOnNextOpen) { - _this.eventEmitter.publish('fitBounds.' + _this.windowId, _this.boundsToFocusOnNextOpen); - _this.boundsToFocusOnNextOpen = null; - } - - _this.osd.world.addHandler( "add-item", addItemHandler ); - - _this.osd.addHandler('zoom', $.debounce(function(){ - _this.setBounds(); - }, 300)); - - _this.osd.addHandler('pan', $.debounce(function(){ - _this.setBounds(); - }, 300)); - }); - - _this.osd.open(tileSources[0], {opacity:1, x:0, y:0, width:1}); - }); - - }, - - addLayer: function(tileSources, aspectRatio) { - var _this = this; - jQuery.each(tileSources, function(index, value) { - var newAR = (value.height / value.width); - var options = { - tileSource: value, - opacity: 1, - x: 1.01, - y: 0, - width: aspectRatio / newAR - }; - _this.osd.addTiledImage(options); - }); - }, - - // next two pages for paged objects - // need next single page for lining pages up - // don't need for continuous or individuals - next: function() { - var _this = this; - var next; - if (this.currentImgIndex % 2 === 0) { - next = this.currentImgIndex + 1; - } else { - next = this.currentImgIndex + 2; - } - if (next < this.imagesList.length) { - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[next]['@id']); - } - }, - - // previous two pages for paged objects - // need previous single page for lining things up - // don't need for continuous or individuals - previous: function() { - var _this = this; - var prev; - if (this.currentImgIndex % 2 === 0) { - prev = this.currentImgIndex - 2; - } else { - prev = this.currentImgIndex - 1; - } - if (prev >= 0) { - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[prev]['@id']); - } - }, - - getStitchList: function() { - // Need to check metadata for object type and viewing direction - // Default to 'paged' and 'left-to-right' - // Set index(es) for any other images to stitch with selected image - var stitchList = [], - leftIndex = [], - rightIndex = [], - topIndex = [], - bottomIndex = [], - viewAdjustedImgIndex = this.currentImgIndex, - _this = this; - - this.focusImages = []; - - if (this.viewingHint === 'individuals') { - // don't do any stitching, display like an imageView - stitchList = [this.currentImg]; - } else if (this.viewingHint === 'paged') { - - // For RTL work out index from right hand side. - if (this.viewingDirection === 'right-to-left') { - viewAdjustedImgIndex = (this.imagesList.length-1) - this.currentImgIndex; - } - - // determine the other image for this pair based on index and viewingDirection - if (viewAdjustedImgIndex === 0 || viewAdjustedImgIndex === this.imagesList.length-1) { - //first page (front cover) or last page (back cover), display on its own - stitchList = [this.currentImg]; - } else if (viewAdjustedImgIndex % 2 === 0) { - // even, get previous page. set order in array based on viewingDirection - switch (this.viewingDirection) { - case "left-to-right": - leftIndex[0] = this.currentImgIndex-1; - stitchList = [this.imagesList[this.currentImgIndex-1], this.currentImg]; - break; - case "right-to-left": - rightIndex[0] = this.currentImgIndex+1; - stitchList = [this.currentImg, this.imagesList[this.currentImgIndex+1]]; - break; - case "top-to-bottom": - topIndex[0] = this.currentImgIndex-1; - stitchList = [this.imagesList[this.currentImgIndex-1], this.currentImg]; - break; - case "bottom-to-top": - bottomIndex[0] = this.currentImgIndex-1; - stitchList = [this.currentImg, this.imagesList[this.currentImgIndex-1]]; - break; - default: - break; - } - } else { - // odd, get next page - switch (this.viewingDirection) { - case "left-to-right": - rightIndex[0] = this.currentImgIndex+1; - stitchList = [this.currentImg, this.imagesList[this.currentImgIndex+1]]; - break; - case "right-to-left": - leftIndex[0] = this.currentImgIndex-1; - stitchList = [this.imagesList[this.currentImgIndex-1], this.currentImg]; - break; - case "top-to-bottom": - bottomIndex[0] = this.currentImgIndex+1; - stitchList = [this.currentImg, this.imagesList[this.currentImgIndex+1]]; - break; - case "bottom-to-top": - topIndex[0] = this.currentImgIndex+1; - stitchList = [this.imagesList[this.currentImgIndex+1], this.currentImg]; - break; - default: - break; - } - } - } else if (this.viewingHint === 'continuous') { - // TODO: stitch all images together per the viewingDirection - } else { - // undefined viewingHint, don't do anything - } - - //set the focusImages for highlighting in panels - jQuery.each(stitchList, function(index, image) { - _this.focusImages.push(image['@id']); - }); - _this.eventEmitter.publish('UPDATE_FOCUS_IMAGES.' + this.windowId, {array: this.focusImages}); - return stitchList; - } - }; - -}(Mirador)); diff --git a/js/src/widgets/contextControls.js b/js/src/widgets/contextControls.js deleted file mode 100644 index ebbd15d7830acf164d24e3651519619d0c107f5d..0000000000000000000000000000000000000000 --- a/js/src/widgets/contextControls.js +++ /dev/null @@ -1,372 +0,0 @@ -(function($) { - - $.ContextControls = function(options) { - - jQuery.extend(this, { - element: null, - container: null, - mode: null, - windowId: null, - annoEndpointAvailable: false, - eventEmitter: null - }, options); - - this.init(); - }; - - $.ContextControls.prototype = { - - init: function() { - var _this = this; - var showStrokeStyle = false, - showStrokeColor = false, - showFillColor = false; - this.availableAnnotationStylePickers.forEach(function(picker) { - if (picker === 'StrokeType') { - showStrokeStyle = true; - } - if (picker === 'FillColor') { - showFillColor = true; - } - if (picker === 'StrokeColor') { - showStrokeColor = true; - } - }); - this.setBackground = { - 'solid':function(el){ - _this.setBackgroundImage(el, 'border_type_1.png'); - }, - 'dashed':function(el){ - _this.setBackgroundImage(el, 'border_type_2.png'); - }, - 'dotdashed':function(el){ - _this.setBackgroundImage(el, 'border_type_3.png'); - }, - 'thick':function(el){ - _this.setBackgroundImage(el, 'border_type_4.png'); - }, - 'thickest':function(el){ - _this.setBackgroundImage(el, 'border_type_5.png'); - }, - }; - var annotationProperties = this.canvasControls.annotations; - - if (annotationProperties.annotationLayer && this.annoEndpointAvailable) { - this.annotationElement = jQuery(this.annotationTemplate({ - tools : _this.availableAnnotationTools, - showEdit : annotationProperties.annotationCreation, - showStrokeStyle: showStrokeStyle, - showStrokeColor: showStrokeColor, - showFillColor: showFillColor, - showRefresh : annotationProperties.annotationRefresh - })).appendTo(this.container.find('.mirador-osd-annotation-controls')); - this.annotationElement.hide(); - this.setQtips(this.container.find('.mirador-osd-annotation-controls')); - this.setBorderFillColorPickers(); - } - - if(showStrokeStyle){ - this.addStrokeStylePicker(); - } - - if (this.canvasControls.imageManipulation.manipulationLayer) { - this.manipulationElement = jQuery(this.manipulationTemplate({ - filtersSupported: Modernizr.cssfilters, - showRotate: this.canvasControls.imageManipulation.controls.rotate, - showBrightness: this.canvasControls.imageManipulation.controls.brightness, - showContrast: this.canvasControls.imageManipulation.controls.contrast, - showSaturate: this.canvasControls.imageManipulation.controls.saturate, - showGrayscale: this.canvasControls.imageManipulation.controls.grayscale, - showInvert: this.canvasControls.imageManipulation.controls.invert, - showMirror: this.canvasControls.imageManipulation.controls.mirror - })).appendTo(this.container.find('.mirador-manipulation-controls')); - this.setQtips(this.container.find('.mirador-manipulation-controls')); - this.manipulationElement.hide(); - } - - this.bindEvents(); - }, - - setQtips: function(element) { - var _this = this; - element.find('a').each(function() { - jQuery(this).qtip({ - content: { - text: jQuery(this).attr('title'), - }, - position: { - my: 'bottom center', - at: 'top center', - viewport: true, - container: _this.qtipElement - }, - style: { - classes: 'qtip-dark qtip-shadow qtip-rounded' - } - }); - }); - }, - - addColorPicker:function(selector,options){ - this.container.find(selector).spectrum(options); - }, - - getImagePath:function(imageName){ - return this.state.getStateProperty('buildPath') + this.state.getStateProperty('imagesPath') + imageName; - }, - - setBackgroundImage:function(el,imageName){ - el.css('background-image','url('+this.getImagePath(imageName)+')'); - }, - - removeBackgroundImage:function(el){ - el.css('background-image',''); - }, - - addStrokeStylePicker:function(){ - this.setBackground.solid(this.container.find('.mirador-line-type .solid')); - this.setBackground.thick(this.container.find('.mirador-line-type .thick')); - this.setBackground.thickest(this.container.find('.mirador-line-type .thickest')); - this.setBackground.dashed(this.container.find('.mirador-line-type .dashed')); - this.setBackground.dotdashed(this.container.find('.mirador-line-type .dotdashed')); - }, - - setBorderFillColorPickers: function() { - var _this = this; - var defaultBorderColor = _this.state.getStateProperty('drawingToolsSettings').strokeColor, - defaultFillColor = _this.state.getStateProperty('drawingToolsSettings').fillColor, - defaultAlpha = _this.state.getStateProperty('drawingToolsSettings').fillColorAlpha, - colorObj = tinycolor(defaultFillColor); - colorObj.setAlpha(defaultAlpha); - - this.addColorPicker('.borderColorPicker',{ - showInput: true, - showInitial: false, - showPalette: true, - showButtons: false, - showSelectionPalette: true, - hideAfterPaletteSelect: true, - appendTo: 'parent', - containerClassName: 'borderColorPickerPop'+_this.windowId, - preferredFormat: "rgb", - hide: function(color) { - _this.eventEmitter.publish('changeBorderColor.' + _this.windowId, color.toHexString()); - jQuery(this).spectrum("set", color.toHexString()); - }, - move: function(color) { - _this.eventEmitter.publish('changeBorderColor.' + _this.windowId, color.toHexString()); - }, - show: function(color) { - _this.setColorPickerInCanvas('.borderColorPicker'); - }, - maxSelectionSize: 4, - color: defaultBorderColor, - palette: [ - [defaultBorderColor, "black", "red", "green"], - ["white", "blue", "magenta", "yellow"] - ] - }); - - _this.container.find(".borderColorPicker").next(".sp-replacer").prepend("<i class='material-icons'>border_color</i>"); - // _this.container.find(".borderColorPicker").next(".sp-replacer").append('<i class="fa fa-caret-down dropdown-icon"></i>'); - - _this.addColorPicker('.fillColorPicker',{ - showInput: true, - showInitial: false, - showAlpha: true, - showPalette: true, - showButtons: false, - showSelectionPalette: true, - appendTo: 'parent', - clickoutFiresChange: true, - containerClassName: 'fillColorPickerPop'+_this.windowId, - preferredFormat: "rgb", - hide: function(color) { - _this.eventEmitter.publish('changeFillColor.' + _this.windowId, [color.toHexString(), color.getAlpha()]); - jQuery(this).spectrum("set", color); - }, - move: function(color) { - _this.eventEmitter.publish('changeFillColor.' + _this.windowId, [color.toHexString(), color.getAlpha()]); - }, - show: function(color) { - _this.setColorPickerInCanvas('.fillColorPicker'); - }, - maxSelectionSize: 4, - color: colorObj, - palette: [ - [colorObj, "black", "red", "green"], - ["white", "blue", "magenta", "yellow"] - ] - }); - - _this.container.find(".fillColorPicker").next(".sp-replacer").prepend("<i class='material-icons'>format_color_fill</i>"); - // _this.container.find(".fillColorPicker").next(".sp-replacer").append('<i class="fa fa-caret-down dropdown-icon"></i>'); - }, - - setColorPickerInCanvas: function(selector) { - // check for the selector being out of canvas - var pickerContainer=this.container.find(selector).siblings('.sp-container').first(), - pickerOffset=pickerContainer.offset(), - windowWidth = this.state.windowsElements[this.windowId].width(); - if (pickerContainer.width() + pickerOffset.left > windowWidth) { - pickerContainer.css('left', windowWidth - (pickerContainer.outerWidth())); - } - }, - - annotationShow: function() { - this.annotationElement.fadeIn("150"); - }, - - annotationHide: function() { - this.annotationElement.fadeOut("150"); - }, - - manipulationShow: function() { - this.manipulationElement.fadeIn("150"); - }, - - manipulationHide: function() { - this.manipulationElement.fadeOut("150"); - }, - - bindEvents: function() { - var _this = this; - // for some reason using :not selector isn't working for mouseenter/mouseleave, - // so check for hud-disabled at the beginning instead - this.container.find('.mirador-line-type').on('mouseenter', function() { - if (jQuery(this).hasClass('hud-disabled')) { - return false; - } - _this.container.find('.type-list').stop().slideFadeToggle(300); - }); - this.container.find('.mirador-line-type').on('mouseleave', function() { - if (jQuery(this).hasClass('hud-disabled')) { - return false; - } - _this.container.find('.type-list').stop().slideFadeToggle(300); - }); - this.container.find('.mirador-line-type').find('ul li').on('click', function() { - if (jQuery(this).hasClass('hud-disabled')) { - return false; - } - var className = jQuery(this).find('i').attr('class').replace(/fa/, '').replace(/ /, ''); - _this.removeBackgroundImage(_this.container.find('.mirador-line-type .border-type-image')); - _this.setBackground[className](_this.container.find('.mirador-line-type .border-type-image')); - _this.eventEmitter.publish('toggleBorderType.' + _this.windowId, className); - }); - }, - - annotationTemplate: $.Handlebars.compile([ - '{{#if showEdit}}', - '<a class="mirador-osd-pointer-mode hud-control selected" title="{{t "pointerTooltip"}}">', - '<i class="fa fa-mouse-pointer"></i>', - '</a>', - '{{#each tools}}', - '<a class="mirador-osd-{{this.logoClass}}-mode hud-control mirador-osd-edit-mode" title="{{t this.tooltip}}">', - '<i class="material-icons">{{this.logoClass}}</i>', - '</a>', - '{{/each}}', - '{{#if showStrokeStyle}}', - '<a class="hud-control hud-dropdown hud-disabled mirador-line-type" aria-label="{{t "borderTypeTooltip"}}" title="{{t "borderTypeTooltip"}}">', - '<i class="material-icons mirador-border-icon">create</i>', - '<i class="border-type-image solid"></i>', - '<i class="fa fa-caret-down dropdown-icon"></i>', - '<ul class="dropdown type-list">', - '<li><i class="fa solid"></i> {{t "solid"}}</li>', - '<li><i class="fa thick"></i> {{t "thick"}}</li>', - '<li><i class="fa thickest"></i> {{t "thickest"}}</li>', - '<li><i class="fa dashed"></i> {{t "dashed"}}</li>', - '<li><i class="fa dotdashed"></i> {{t "dotDashed"}}</li>', - '</ul>', - '</a>', - '{{/if}}', - '{{#if showStrokeColor}}', - '<a class="hud-control hud-dropdown hud-disabled mirador-osd-color-picker" title="{{t "borderColorTooltip"}}">', - '<input type="text" class="borderColorPicker"/>', - '</a>', - '{{/if}}', - '{{#if showFillColor}}', - '<a class="hud-control hud-dropdown hud-disabled mirador-osd-color-picker" title="{{t "fillColorTooltip"}}">', - '<input type="text" class="fillColorPicker"/>', - '</a>', - '{{/if}}', - '{{#if showRefresh}}', - '<a class="hud-control mirador-osd-refresh-mode">', - '<i class="fa fa-lg fa-refresh"></i>', - '</a>', - '{{/if}}', - '{{/if}}' - ].join('')), - - manipulationTemplate: $.Handlebars.compile([ - '{{#if showRotate}}', - '<a class="hud-control mirador-osd-rotate-right" title="{{t "rotateRightTooltip"}}">', - '<i class="fa fa-lg fa-rotate-right"></i>', - '</a>', - '<a class="hud-control mirador-osd-rotate-left" title="{{t "rotateLeftTooltip"}}">', - '<i class="fa fa-lg fa-rotate-left"></i>', - '</a>', - '{{/if}}', - - '{{#if filtersSupported}}', - '{{#if showBrightness}}', - '<a class="hud-control mirador-osd-brightness" title="{{t "brightnessTooltip"}}">', - '<i class="material-icons">wb_sunny</i>', - '<i class="fa fa-caret-down"></i>', - '<div class="mirador-osd-brightness-slider mirador-slider"/>', - '</a>', - '{{/if}}', - '{{#if showContrast}}', - '<a class="hud-control mirador-osd-contrast" title="{{t "contrastTooltip"}}">', - '<i class="material-icons">brightness_6</i>', - '<i class="fa fa-caret-down"></i>', - '<div class="mirador-osd-contrast-slider mirador-slider"/>', - '</a>', - '{{/if}}', - '{{#if showSaturate}}', - '<a class="hud-control mirador-osd-saturation" title="{{t "saturationTooltip"}}">', - '<i class="material-icons">gradient</i>', - '<i class="fa fa-caret-down"></i>', - '<div class="mirador-osd-saturation-slider mirador-slider"/>', - '</a>', - '{{/if}}', - '{{#if showGrayscale}}', - '<a class="hud-control mirador-osd-grayscale" title="{{t "grayscaleTooltip"}}">', - '<i class="material-icons">filter_b_and_w</i>', - '</a>', - '{{/if}}', - '{{#if showInvert}}', - '<a class="hud-control mirador-osd-invert" title="{{t "invertTooltip"}}">', - '<i class="material-icons">invert_colors</i>', - '</a>', - '{{/if}}', - '{{#if showMirror}}', - '<a class="hud-control mirador-osd-mirror" title="{{t "mirrorTooltip"}}">', - '<i class="material-icons">swap_horiz</i>', - '</a>', - '{{/if}}', - '<a class="hud-control mirador-osd-reset" title="{{t "resetTooltip"}}">', - '<i class="fa fa-lg fa-refresh"></i>', - '</a>', - '{{/if}}', - ].join('')), - - // for accessibility, make sure to add aria-labels just like above - editorTemplate: $.Handlebars.compile([ - '<div class="mirador-osd-context-controls hud-container">', - '<a class="mirador-osd-back hud-control" role="button">', - '<i class="fa fa-lg fa-arrow-left"></i>', - '</a>', - '<a class="mirador-osd-rect-tool hud-control" role ="buton">', - '<i class="fa fa-lg fa-pencil-square"></i>', - '</a>', - '<a class="mirador-osd-rect-tool hud-control" role="button">', - '<i class="fa fa-lg fa-ellipsis-h"></i>', - '</a>', - '<a class="mirador-osd-rect-tool hud-control" role="button">', - '<i class="fa fa-lg fa-gear"></i>', - '</a>', - '</div>' - ].join('')) - }; -}(Mirador)); diff --git a/js/src/widgets/hud.js b/js/src/widgets/hud.js deleted file mode 100644 index 0b3b6f100d0cbf530ac6a561eec606cdd077a388..0000000000000000000000000000000000000000 --- a/js/src/widgets/hud.js +++ /dev/null @@ -1,270 +0,0 @@ -(function($) { - - $.Hud = function(options) { - - jQuery.extend(this, { - element: null, - windowId: null, - annoState: null, - annoEndpointAvailable: false, - eventEmitter: null - }, options); - - this.init(); - }; - - $.Hud.prototype = { - - init: function() { - this.createStateMachines(); - - var showAnno = typeof this.showAnno !== 'undefined' ? this.showAnno : this.canvasControls.annotations.annotationLayer, - showImageControls = typeof this.showImageControls !== 'undefined' ? this.showImageControls : this.canvasControls.imageManipulation.manipulationLayer; - this.element = jQuery(this.template({ - showNextPrev : this.showNextPrev, - showBottomPanel : typeof this.bottomPanelAvailable === 'undefined' ? true : this.bottomPanelAvailable, - showAnno : showAnno, - showImageControls : showImageControls - })).appendTo(this.appendTo); - - if (showAnno || showImageControls) { - this.contextControls = new $.ContextControls({ - element: null, - container: this.element.find('.mirador-osd-context-controls'), - qtipElement: this.qtipElement, - mode: 'displayAnnotations', - windowId: this.windowId, - canvasControls: this.canvasControls, - annoEndpointAvailable: this.annoEndpointAvailable, - availableAnnotationTools: this.availableAnnotationTools, - availableAnnotationStylePickers: this.availableAnnotationStylePickers, - state: this.state, - eventEmitter: this.eventEmitter - }); - } - - this.listenForActions(); - this.bindEvents(); - }, - - listenForActions: function() { - var _this = this; - this.eventEmitter.subscribe('DISABLE_TOOLTIPS_BY_CLASS.' + this.windowId, function(event, className) { - _this.element.find(className).qtip('disable'); - }); - - this.eventEmitter.subscribe('ENABLE_TOOLTIPS_BY_CLASS.' + this.windowId, function(event, className) { - _this.element.find(className).qtip('enable'); - }); - - this.eventEmitter.subscribe('SET_STATE_MACHINE_POINTER.' + this.windowId, function(event) { - if (_this.annoState.current === 'none') { - _this.annoState.startup(); - } else if (_this.annoState.current === 'off') { - _this.annoState.displayOn(); - } else { - _this.annoState.choosePointer(); - } - }); - }, - - bindEvents: function() { - var _this = this; - }, - - createStateMachines: function() { - var _this = this, - duration = "200"; - - //add more to these as AnnoState becomes more complex - //initial state is 'none' - this.annoState = StateMachine.create({ - events: [ - { name: 'startup', from: 'none', to: 'off' }, - { name: 'displayOn', from: 'off', to: 'pointer'}, - { name: 'displayOff', from: ['pointer', 'shape'], to: 'off'}, - { name: 'choosePointer', from: ['pointer', 'shape'], to: 'pointer'}, - { name: 'chooseShape', from: 'pointer', to: 'shape'}, - { name: 'changeShape', from: 'shape', to: 'shape'}, - { name: 'refresh', from: 'pointer', to: 'pointer'}, - { name: 'refresh', from: 'shape', to: 'shape'} - ], - callbacks: { - onstartup: function(event, from, to) { - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - ondisplayOn: function(event, from, to) { - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-osd-annotations-layer', 'selected']); - if (_this.annoEndpointAvailable) { - _this.contextControls.annotationShow(); - } - _this.eventEmitter.publish('modeChange.' + _this.windowId, 'displayAnnotations'); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-osd-pointer-mode', 'selected']); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.hud-dropdown', 'hud-disabled']); - _this.eventEmitter.publish('DISABLE_TOOLTIPS_BY_CLASS.'+_this.windowId, '.hud-dropdown'); - _this.eventEmitter.publish('DEFAULT_CURSOR.' + _this.windowId); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - ondisplayOff: function(event, from, to) { - if (_this.annoEndpointAvailable) { - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-edit-mode', 'selected']); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-pointer-mode', 'selected']); - _this.eventEmitter.publish('CANCEL_ACTIVE_ANNOTATIONS.'+_this.windowId); - _this.contextControls.annotationHide(); - } - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-annotations-layer', 'selected']); - _this.eventEmitter.publish('modeChange.' + _this.windowId, 'default'); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - onchoosePointer: function(event, from, to) { - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-edit-mode', 'selected']); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-osd-pointer-mode', 'selected']); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.hud-dropdown', 'hud-disabled']); - _this.eventEmitter.publish('DISABLE_TOOLTIPS_BY_CLASS.'+_this.windowId, '.hud-dropdown'); - _this.eventEmitter.publish('modeChange.' + _this.windowId, 'displayAnnotations'); - _this.eventEmitter.publish('DEFAULT_CURSOR.' + _this.windowId); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - onchooseShape: function(event, from, to, shape) { - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-pointer-mode', 'selected']); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-edit-mode', 'selected']); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.hud-dropdown', 'hud-disabled']); - _this.eventEmitter.publish('ENABLE_TOOLTIPS_BY_CLASS.'+_this.windowId, '.hud-dropdown'); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-osd-'+shape+'-mode', 'selected']); - _this.eventEmitter.publish('modeChange.' + _this.windowId, 'creatingAnnotation'); - _this.eventEmitter.publish('CROSSHAIR_CURSOR.' + _this.windowId); - _this.eventEmitter.publish('toggleDrawingTool.'+_this.windowId, shape); - - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - onchangeShape: function(event, from, to, shape) { - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-pointer-mode', 'selected']); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-osd-edit-mode', 'selected']); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.hud-dropdown', 'hud-disabled']); - _this.eventEmitter.publish('ENABLE_TOOLTIPS_BY_CLASS.'+_this.windowId, '.hud-dropdown'); - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-osd-'+shape+'-mode', 'selected']); - _this.eventEmitter.publish('CROSSHAIR_CURSOR.' + _this.windowId); - //don't need to trigger a mode change, just change tool - _this.eventEmitter.publish('toggleDrawingTool.'+_this.windowId, shape); - - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - annotationState: to - }); - }, - onrefresh: function(event, from, to) { - //TODO - } - } - }); - - this.manipulationState = StateMachine.create({ - events: [ - { name: 'startup', from: 'none', to: 'manipulationOff' }, - { name: 'displayOn', from: 'manipulationOff', to: 'manipulationOn' }, - { name: 'displayOff', from: 'manipulationOn', to: 'manipulationOff' } - ], - callbacks: { - onstartup: function(event, from, to) { - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - manipulationState: to - }); - }, - ondisplayOn: function(event, from, to) { - _this.eventEmitter.publish('HUD_ADD_CLASS.'+_this.windowId, ['.mirador-manipulation-toggle', 'selected']); - _this.contextControls.manipulationShow(); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - manipulationState: to - }); - }, - ondisplayOff: function(event, from, to) { - _this.contextControls.manipulationHide(); - _this.eventEmitter.publish('HUD_REMOVE_CLASS.'+_this.windowId, ['.mirador-manipulation-toggle', 'selected']); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.windowId, - manipulationState: to - }); - } - } - }); - }, - - template: $.Handlebars.compile([ - '<div class="mirador-hud">', - '{{#if showNextPrev}}', - '<a class="mirador-osd-previous hud-control ">', - '<i class="fa fa-3x fa-chevron-left "></i>', - '</a>', - '{{/if}}', - '<div class="mirador-osd-context-controls hud-container">', - '{{#if showAnno}}', - '<div class="mirador-osd-annotation-controls">', - '<a class="mirador-osd-annotations-layer hud-control" role="button" title="{{t "annotationTooltip"}}" aria-label="{{t "annotationTooltip"}}">', - '<i class="fa fa-lg fa-comments"></i>', - '</a>', - '</div>', - '{{/if}}', - '{{#if showImageControls}}', - '<div class="mirador-manipulation-controls">', - '<a class="mirador-manipulation-toggle hud-control" role="button" title="{{t "imageManipulationTooltip"}}" aria-label="{{t "imageManipulationTooltip"}}">', - '<i class="material-icons">tune</i>', - '</a>', - '</div>', - '{{/if}}', - '</div>', - '{{#if showNextPrev}}', - '<a class="mirador-osd-next hud-control ">', - '<i class="fa fa-3x fa-chevron-right"></i>', - '</a>', - '{{/if}}', - '{{#if showBottomPanel}}', - '<a class="mirador-osd-toggle-bottom-panel hud-control" role="button" aria-label="Toggle Bottom Panel">', - '<i class="fa fa-2x fa-ellipsis-h"></i>', - '</a>', - '{{/if}}', - '<div class="mirador-pan-zoom-controls hud-control">', - '<a class="mirador-osd-up hud-control" role="button" aria-label="Move image up">', - '<i class="fa fa-chevron-circle-up"></i>', - '</a>', - '<a class="mirador-osd-right hud-control" role="button" aria-label="Move image right">', - '<i class="fa fa-chevron-circle-right"></i>', - '</a>', - '<a class="mirador-osd-down hud-control" role="button" aria-label="Move image down">', - '<i class="fa fa-chevron-circle-down"></i>', - '</a>', - '<a class="mirador-osd-left hud-control" role="button" aria-label="Move image left">', - '<i class="fa fa-chevron-circle-left"></i>', - '</a>', - '<a class="mirador-osd-zoom-in hud-control" role="button" aria-label="Zoom in">', - '<i class="fa fa-plus-circle"></i>', - '</a>', - '<a class="mirador-osd-zoom-out hud-control" role="button" aria-label="Zoom out">', - '<i class="fa fa-minus-circle"></i>', - '</a>', - '<a class="mirador-osd-go-home hud-control" role="button" aria-label="Reset image bounds">', - '<i class="fa fa-home"></i>', - '</a>', - '</div>', - '</div>' - ].join('')) - - }; - -}(Mirador)); diff --git a/js/src/widgets/imageView.js b/js/src/widgets/imageView.js deleted file mode 100755 index 9376c5cfd57832c20a009e9f49e03b44c36e3aa4..0000000000000000000000000000000000000000 --- a/js/src/widgets/imageView.js +++ /dev/null @@ -1,841 +0,0 @@ -(function($) { - - $.ImageView = function(options) { - - jQuery.extend(this, { - currentImg: null, - windowId: null, - currentImgIndex: 0, - canvasID: null, - canvases: null, - imagesList: [], - imagesListRtl: [], - element: null, - elemOsd: null, - manifest: null, - osd: null, - osdOptions: { - osdBounds: null, - zoomLevel: null - }, - osdCls: 'mirador-osd', - elemAnno: null, - annoCls: 'annotation-canvas', - annotationsLayer: null, - forceShowControls: false, - eventEmitter: null, - vDirectionStatus: '' - }, options); - - this.init(); - }; - - $.ImageView.prototype = { - - init: function() { - var _this = this; - this.horizontallyFlipped = false; - this.originalDragHandler = null; - if(this.vDirectionStatus == 'rtl'){ - this.imagesList = this.imagesListRtl.concat(); - } - // check (for thumbnail view) if the canvasID is set. - // If not, make it page/item 1. - if (this.canvasID !== null) { - this.currentImgIndex = $.getImageIndexById(this.imagesList, this.canvasID); - } - - if (!this.osdOptions) { - this.osdOptions = { - osdBounds: null, - zoomLevel: null - }; - } - this.currentImg = this.imagesList[this.currentImgIndex]; - this.element = jQuery(this.template()).appendTo(this.appendTo); - this.elemAnno = jQuery('<div/>') - .addClass(this.annoCls) - .appendTo(this.element); - - - _this.eventEmitter.publish('UPDATE_FOCUS_IMAGES.' + this.windowId, {array: [this.canvasID]}); - - var allTools = $.getTools(this.state.getStateProperty('drawingToolsSettings')); - this.availableAnnotationTools = []; - for ( var i = 0; i < this.state.getStateProperty('availableAnnotationDrawingTools').length; i++) { - for ( var j = 0; j < allTools.length; j++) { - if (this.state.getStateProperty('availableAnnotationDrawingTools')[i] == allTools[j].name) { - var values = {}; - values.logoClass = allTools[j].logoClass; - values.tooltip = allTools[j].tooltip; - this.availableAnnotationTools.push(values); - } - } - } - // The hud controls are consistent - // throughout any updates to the osd canvas. - this.hud = new $.Hud({ - appendTo: this.element, - qtipElement: this.qtipElement, - bottomPanelAvailable: this.bottomPanelAvailable, - windowId: this.windowId, - canvasControls: this.canvasControls, - annoEndpointAvailable: this.annoEndpointAvailable, - showNextPrev : this.imagesList.length !== 1, - availableAnnotationStylePickers: this.state.getStateProperty('availableAnnotationStylePickers'), - availableAnnotationTools: this.availableAnnotationTools, - state: this.state, - eventEmitter: this.eventEmitter - }); - - this.initialiseImageCanvas(); - this.bindEvents(); - this.listenForActions(); - - if (typeof this.bottomPanelAvailable !== 'undefined' && !this.bottomPanelAvailable) { - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, false); - } else { - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, null); - } - }, - - template: $.Handlebars.compile([ - '<div class="image-view">', - '</div>' - - ].join('')), - - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('bottomPanelSet.' + _this.windowId, function(event, visible) { - var dodgers = _this.element.find('.mirador-osd-toggle-bottom-panel, .mirador-pan-zoom-controls'); - var arrows = _this.element.find('.mirador-osd-next, .mirador-osd-previous'); - if (visible === true) { - dodgers.addClass('bottom-panel-open'); - arrows.addClass('bottom-panel-open'); - } else { - dodgers.removeClass('bottom-panel-open'); - arrows.removeClass('bottom-panel-open'); - } - }); - - _this.eventEmitter.subscribe('fitBounds.' + _this.windowId, function(event, bounds) { - var rect = new OpenSeadragon.Rect(bounds.x, bounds.y, bounds.width, bounds.height); - _this.osd.viewport.fitBoundsWithConstraints(rect, false); - }); - - _this.eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, _this.currentCanvasIDUpdated.bind(_this)); - _this.eventEmitter.subscribe('image-needed' + _this.windowId, _this.loadImage.bind(_this)); - _this.eventEmitter.subscribe('image-show' + _this.windowId, _this.showImage.bind(_this)); - _this.eventEmitter.subscribe('image-hide' + _this.windowId, _this.hideImage.bind(_this)); - _this.eventEmitter.subscribe('image-removed' + _this.windowId, _this.removeImage.bind(_this)); - _this.eventEmitter.subscribe('image-opacity-updated' + _this.windowId, _this.updateImageOpacity.bind(_this)); - // These will come soon. - // _this.eventEmitter.subscribe('image-layering-index-updated'); - // _this.eventEmitter.subscribe('image-position-updated'); - // _this.eventEmitter.subscribe('image-rotation-updated'); - // _this.eventEmitter.subscribe('image-scale-updated'); - // _this.eventEmitter.subscribe('canvas-position-updated'); - - //Related to Annotations HUD - _this.eventEmitter.subscribe('HUD_REMOVE_CLASS.' + _this.windowId, function(event, elementSelector, className) { - _this.element.find(elementSelector).removeClass(className); - }); - - _this.eventEmitter.subscribe('HUD_ADD_CLASS.' + _this.windowId, function(event, elementSelector, className) { - _this.element.find(elementSelector).addClass(className); - }); - - _this.eventEmitter.subscribe('HUD_FADE_IN.' + _this.windowId, function(event, elementSelector, duration) { - _this.element.find(elementSelector).fadeIn(duration); - }); - - _this.eventEmitter.subscribe('HUD_FADE_OUT.' + _this.windowId, function(event, elementSelector, duration, complete) { - _this.element.find(elementSelector).fadeOut(duration, complete); - }); - - _this.eventEmitter.subscribe('DEFAULT_CURSOR.' + _this.windowId, function(event) { - jQuery(_this.osd.canvas).css("cursor", "default"); - }); - _this.eventEmitter.subscribe('CROSSHAIR_CURSOR.' + _this.windowId, function(event) { - jQuery(_this.osd.canvas).css("cursor", "crosshair"); - }); - _this.eventEmitter.subscribe('POINTER_CURSOR.' + _this.windowId, function(event) { - jQuery(_this.osd.canvas).css("cursor", "pointer"); - }); - //Related to Annotations HUD - }, - - bindEvents: function() { - var _this = this; - - this.element.find('.mirador-osd-next').on('click', function() { - _this.next(); - }); - - this.element.find('.mirador-osd-previous').on('click', function() { - _this.previous(); - }); - - this.element.find('.mirador-osd-annotations-layer').on('click', function() { - if (_this.hud.annoState.current === 'none') { - _this.hud.annoState.startup(this); - } - if (_this.hud.annoState.current === 'off') { - _this.hud.annoState.displayOn(this); - _this.annotationState = 'on'; - } else { - //make sure to force the controls back to auto fade - _this.forceShowControls = false; - _this.hud.annoState.displayOff(this); - _this.annotationState = 'off'; - } - }); - - this.element.find('.mirador-manipulation-toggle').on('click', function() { - if (_this.hud.manipulationState.current === 'none') { - _this.hud.manipulationState.startup(this); - } - if (_this.hud.manipulationState.current === 'manipulationOff') { - _this.hud.manipulationState.displayOn(this); - } else { - _this.hud.manipulationState.displayOff(this); - } - }); - - this.element.find('.mirador-osd-go-home').on('click', function() { - _this.osd.viewport.goHome(); - }); - - this.element.find('.mirador-osd-up').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(0, -panBy.y)); - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-right').on('click', function() { - var panBy = _this.getPanByValue(); - if (_this.horizontallyFlipped) { - _this.osd.viewport.panBy(new OpenSeadragon.Point(-panBy.x, 0)); - } else { - _this.osd.viewport.panBy(new OpenSeadragon.Point(panBy.x, 0)); - } - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-down').on('click', function() { - var panBy = _this.getPanByValue(); - _this.osd.viewport.panBy(new OpenSeadragon.Point(0, panBy.y)); - _this.osd.viewport.applyConstraints(); - }); - this.element.find('.mirador-osd-left').on('click', function() { - var panBy = _this.getPanByValue(); - if (_this.horizontallyFlipped) { - _this.osd.viewport.panBy(new OpenSeadragon.Point(panBy.x, 0)); - } else { - _this.osd.viewport.panBy(new OpenSeadragon.Point(-panBy.x, 0)); - } - _this.osd.viewport.applyConstraints(); - }); - - this.element.find('.mirador-osd-zoom-in').on('click', function() { - var osd = _this.osd; - if ( osd.viewport ) { - osd.viewport.zoomBy( - osd.zoomPerClick / 1.0 - ); - osd.viewport.applyConstraints(); - } - }); - this.element.find('.mirador-osd-zoom-out').on('click', function() { - var osd = _this.osd; - if ( osd.viewport ) { - osd.viewport.zoomBy( - 1.0 / osd.zoomPerClick - ); - osd.viewport.applyConstraints(); - } - }); - - this.element.find('.mirador-osd-toggle-bottom-panel').on('click', function() { - _this.eventEmitter.publish('TOGGLE_BOTTOM_PANEL_VISIBILITY.' + _this.windowId); - }); - - // Annotation specific controls - this.element.find('.mirador-osd-edit-mode').on('click', function() { - var shape = jQuery(this).find('.material-icons').html(); - if (_this.hud.annoState.current === 'pointer') { - _this.hud.annoState.chooseShape(shape); - } else { - _this.hud.annoState.changeShape(shape); - } - //when a user is in Create mode, don't let the controls auto fade as it could be distracting to the user - _this.forceShowControls = true; - _this.element.find(".hud-control").stop(true, true).removeClass('hidden', _this.state.getStateProperty('fadeDuration')); - }); - - this.element.find('.mirador-osd-pointer-mode').on('click', function() { - // go back to pointer mode - if (_this.hud.annoState.current === 'shape') { - _this.hud.annoState.choosePointer(); - //go back to allowing the controls to auto fade - _this.forceShowControls = false; - } - }); - - this.element.find('.mirador-osd-refresh-mode').on('click', function() { - //update annotation list from endpoint - _this.eventEmitter.publish('updateAnnotationList.' + _this.windowId); - }); - //Annotation specific controls - - //Image manipulation controls - //set the original values for all of the CSS filter options - var filterValues = { - "brightness" : "brightness(100%)", - "contrast" : "contrast(100%)", - "saturate" : "saturate(100%)", - "grayscale" : "grayscale(0%)", - "invert" : "invert(0%)" - }; - - function setFilterCSS() { - var filterCSS = jQuery.map(filterValues, function(value, key) { return value; }).join(" "), - osdCanvas = jQuery(_this.osd.drawer.canvas); - osdCanvas.css({ - 'filter' : filterCSS, - '-webkit-filter' : filterCSS, - '-moz-filter' : filterCSS, - '-o-filter' : filterCSS, - '-ms-filter' : filterCSS - }); - } - - function resetImageManipulationControls() { - //reset rotation - if (_this.osd) { - _this.osd.viewport.setRotation(0); - } - - //reset brightness - filterValues.brightness = "brightness(100%)"; - _this.element.find('.mirador-osd-brightness-slider').slider('option','value',100); - _this.element.find('.mirador-osd-brightness-slider').find('.percent').text(100 + '%'); - - //reset contrast - filterValues.contrast = "contrast(100%)"; - _this.element.find('.mirador-osd-contrast-slider').slider('option','value',100); - _this.element.find('.mirador-osd-contrast-slider').find('.percent').text(100 + '%'); - - //reset saturation - filterValues.saturate = "saturate(100%)"; - _this.element.find('.mirador-osd-saturation-slider').slider('option','value',100); - _this.element.find('.mirador-osd-saturation-slider').find('.percent').text(100 + '%'); - - //reset grayscale - filterValues.grayscale = "grayscale(0%)"; - _this.element.find('.mirador-osd-grayscale').removeClass('selected'); - - //reset color inversion - filterValues.invert = "invert(0%)"; - _this.element.find('.mirador-osd-invert').removeClass('selected'); - - //reset mirror - jQuery(_this.osd.canvas).removeClass('mirador-mirror'); - if (_this.originalDragHandler) { - _this.osd.viewport.viewer.innerTracker.dragHandler = _this.originalDragHandler; - } - - setFilterCSS(); - } - - this.element.find('.mirador-osd-rotate-right').on('click', function() { - if (_this.osd) { - var currentRotation = _this.osd.viewport.getRotation(); - _this.osd.viewport.setRotation(currentRotation + 90); - } - }); - - this.element.find('.mirador-osd-rotate-left').on('click', function() { - if (_this.osd) { - var currentRotation = _this.osd.viewport.getRotation(); - _this.osd.viewport.setRotation(currentRotation - 90); - } - }); - - this.element.find('.mirador-osd-brightness-slider').slider({ - orientation: "vertical", - range: "min", - min: 0, - max: 200, - value: 100, - create: function(event, ui) { - var v = jQuery(this).slider('value'), - span = jQuery('<span class="percent">').text(v + '%'); - - jQuery(this).find('.ui-slider-handle').append(span); - }, - slide: function(event, ui) { - filterValues.brightness = "brightness("+ui.value+"%)"; - setFilterCSS(); - jQuery(this).find('.percent').text(ui.value + '%'); - } - }).hide(); - - this.element.find('.mirador-osd-brightness').on('mouseenter', - function() { - _this.element.find('.mirador-osd-brightness-slider').stop(true, true).show(); - }).on('mouseleave', - function() { - _this.element.find('.mirador-osd-brightness-slider').stop(true, true).hide(); - }); - - this.element.find('.mirador-osd-contrast-slider').slider({ - orientation: "vertical", - range: "min", - min: 0, - max: 200, - value: 100, - create: function(event, ui) { - var v = jQuery(this).slider('value'), - span = jQuery('<span class="percent">').text(v + '%'); - - jQuery(this).find('.ui-slider-handle').append(span); - }, - slide: function(event, ui) { - filterValues.contrast = "contrast("+ui.value+"%)"; - setFilterCSS(); - jQuery(this).find('.percent').text(ui.value + '%'); - } - }).hide(); - - this.element.find('.mirador-osd-contrast').on('mouseenter', - function() { - _this.element.find('.mirador-osd-contrast-slider').stop(true, true).show(); - }).on('mouseleave', - function() { - _this.element.find('.mirador-osd-contrast-slider').stop(true, true).hide(); - }); - - this.element.find('.mirador-osd-saturation-slider').slider({ - orientation: "vertical", - range: "min", - min: 0, - max: 200, - value: 100, - create: function(event, ui) { - var v = jQuery(this).slider('value'), - span = jQuery('<span class="percent">').text(v + '%'); - - jQuery(this).find('.ui-slider-handle').append(span); - }, - slide: function(event, ui) { - filterValues.saturate = "saturate("+ui.value+"%)"; - setFilterCSS(); - jQuery(this).find('.percent').text(ui.value + '%'); - } - }).hide(); - - this.element.find('.mirador-osd-saturation').on('mouseenter', - function() { - _this.element.find('.mirador-osd-saturation-slider').stop(true, true).show(); - }).on('mouseleave', - function() { - _this.element.find('.mirador-osd-saturation-slider').stop(true, true).hide(); - }); - - this.element.find('.mirador-osd-grayscale').on('click', function() { - if (jQuery(this).hasClass('selected')) { - filterValues.grayscale = "grayscale(0%)"; - jQuery(this).removeClass('selected'); - } else { - filterValues.grayscale = "grayscale(100%)"; - jQuery(this).addClass('selected'); - } - setFilterCSS(); - }); - - this.element.find('.mirador-osd-invert').on('click', function() { - if (jQuery(this).hasClass('selected')) { - filterValues.invert = "invert(0%)"; - jQuery(this).removeClass('selected'); - } else { - filterValues.invert = "invert(100%)"; - jQuery(this).addClass('selected'); - } - setFilterCSS(); - }); - - this.element.find('.mirador-osd-mirror').on('click', function() { - if (!_this.originalDragHandler) { - _this.originalDragHandler = _this.osd.viewport && _this.osd.viewport.viewer.innerTracker.dragHandler; - } - if (jQuery(this).hasClass('selected')) { - jQuery(_this.osd.canvas).removeClass('mirador-mirror'); - jQuery(this).removeClass('selected'); - _this.eventEmitter.publish('disableManipulation', 'mirror'); - if (_this.osd.viewport) { - _this.osd.viewport.viewer.innerTracker.dragHandler = _this.originalDragHandler; - } - _this.horizontallyFlipped = false; - } else { - jQuery(_this.osd.canvas).addClass('mirador-mirror'); - jQuery(this).addClass('selected'); - _this.eventEmitter.publish('enableManipulation', 'mirror'); - if (_this.osd.viewport) { - var viewer = _this.osd.viewport.viewer; - viewer.innerTracker.dragHandler = OpenSeadragon.delegate(viewer, function(event) { - event.delta.x = -event.delta.x; - _this.originalDragHandler(event); - }); - } - _this.horizontallyFlipped = true; - } - }); - - this.element.find('.mirador-osd-reset').on('click', function() { - resetImageManipulationControls(); - }); - - this.eventEmitter.subscribe('resetImageManipulationControls.'+this.windowId, function() { - resetImageManipulationControls(); - }); - //Image manipulation controls - }, - - currentCanvasIDUpdated: function(event, canvasId) { - var _this = this, - firstCanvasId = _this.imagesList[0]['@id'], - lastCanvasId = _this.imagesList[_this.imagesList.length-1]['@id']; - - // If it is the first canvas, hide the "go to previous" button, otherwise show it. - if (canvasId === firstCanvasId) { - _this.element.find('.mirador-osd-previous').hide(); - _this.element.find('.mirador-osd-next').show(); - } else if (canvasId === lastCanvasId) { - _this.element.find('.mirador-osd-next').hide(); - _this.element.find('.mirador-osd-previous').show(); - } else { - _this.element.find('.mirador-osd-next').show(); - _this.element.find('.mirador-osd-previous').show(); - } - // If it is the last canvas, hide the "go to previous" button, otherwise show it. - }, - - loadImage: function(event, imageResource) { - var _this = this; - - // We've already loaded this tilesource - if(imageResource.status === 'drawn') { - return; - } - - imageResource.setStatus('requested'); - var bounds = imageResource.getGlobalBounds(); - - _this.osd.addTiledImage({ - x: bounds.x, - y: bounds.y, - width: bounds.width, - tileSource: imageResource.tileSource, - opacity: imageResource.opacity, - clip: imageResource.clipRegion, - index: imageResource.zIndex, - - success: function(event) { - var tiledImage = event.item; - - imageResource.osdTiledImage = tiledImage; - imageResource.setStatus('loaded'); - _this.syncAllImageResourceProperties(imageResource); - - var tileDrawnHandler = function(event) { - if (event.tiledImage === tiledImage) { - imageResource.setStatus('drawn'); - _this.osd.removeHandler('tile-drawn', tileDrawnHandler); - } - }; - _this.osd.addHandler('tile-drawn', tileDrawnHandler); - }, - - error: function(event) { - // Add any auth information here. - // - // var errorInfo = { - // id: imageResource.osdTileSource, - // message: event.message, - // source: event.source - // }; - imageResource.setStatus('failed'); - } - }); - }, - showImage: function(event, imageResource) { - // Check whether or not this item has been drawn. - // This implies that the request has been issued already - // and the opacity can be updated. - if (imageResource.getStatus() === 'drawn') { - this.updateImageOpacity(null, imageResource); - } - }, - hideImage: function(event, imageResource) { - if (imageResource.getStatus() === 'drawn') { - imageResource.osdTiledImage.setOpacity(0); - } - }, - removeImage: function() { - }, - updateImageOpacity: function(event, imageResource) { - if(imageResource.osdTiledImage) { - imageResource.osdTiledImage.setOpacity(imageResource.opacity * imageResource.parent.getOpacity()); - } - }, - syncAllImageResourceProperties: function(imageResource) { - if(imageResource.osdTiledImage) { - var bounds = imageResource.getGlobalBounds(); - // If ever the clipRegion parameter becomes - // writable, add it here. - imageResource.osdTiledImage.setPosition({ - x:bounds.x, - y:bounds.y - }, true); - imageResource.osdTiledImage.setWidth(bounds.width, true); - imageResource.osdTiledImage.setOpacity( - imageResource.getOpacity() * imageResource.parent.getOpacity() - ); - // This will be for the drag and drop functionality. - // _this.updateImageLayeringIndex(imageResource); - } - }, - - getPanByValue: function() { - var bounds = this.osd.viewport.getBounds(true); - //for now, let's keep 50% of the image on the screen - var panBy = { - "x" : bounds.width * 0.5, - "y" : bounds.height * 0.5 - }; - return panBy; - }, - - setBounds: function() { - var _this = this; - - this.osdOptions.osdBounds = this.osd.viewport.getBounds(true); - _this.eventEmitter.publish("imageBoundsUpdated", { - id: _this.windowId, - osdBounds: { - x: _this.osdOptions.osdBounds.x, - y: _this.osdOptions.osdBounds.y, - width: _this.osdOptions.osdBounds.width, - height: _this.osdOptions.osdBounds.height - } - }); - var rectangle = this.osdOptions.osdBounds; // In ImageView, viewport coordinates are in the same as Canvas Coordinates. - _this.eventEmitter.publish("imageRectangleUpdated", { - id: _this.windowId, - osdBounds: { - x: Math.round(rectangle.x), - y: Math.round(rectangle.y), - width: Math.round(rectangle.width), - height: Math.round(rectangle.height) - }, - warning: 'Warning, image rectangle now based on canvas dimensions, not the constituent images.' - }); - }, - - toggle: function(stateValue) { - if (stateValue) { - this.show(); - } else { - this.hide(); - } - }, - - hide: function() { - jQuery(this.element).hide({effect: "fade", duration: 300, easing: "easeOutCubic"}); - }, - - show: function() { - jQuery(this.element).show({ - effect: "fade", duration: 300, easing: "easeInCubic", complete: function () { - // Under firefox $.show() used under display:none iframe does not change the display. - // This is workaround for https://github.com/IIIF/mirador/issues/929 - jQuery(this).css('display', 'block'); - } - }); - }, - - adjustWidth: function(className, hasClass) { - var _this = this; - if (hasClass) { - _this.eventEmitter.publish('REMOVE_CLASS.'+this.windowId, className); - } else { - _this.eventEmitter.publish('ADD_CLASS.'+this.windowId, className); - } - }, - - adjustHeight: function(className, hasClass) { - if (hasClass) { - this.element.removeClass(className); - } else { - this.element.addClass(className); - } - }, - - initialiseImageCanvas: function() { - var _this = this, - osdID = 'mirador-osd-' + $.genUUID(), - canvasModel = _this.canvases[_this.canvasID]; - - _this.elemOsd = - jQuery('<div/>') - .addClass(_this.osdCls) - .attr('id', osdID) - .appendTo(_this.element); - - _this.osd = $.OpenSeadragon({ - id: osdID, - uniqueID: osdID, - preserveViewport: true, - blendTime: 0.1, - alwaysBlend: false, - showNavigationControl: false - }); - - var canvasBounds = canvasModel.getBounds(); - var rect = new OpenSeadragon.Rect( - canvasBounds.x, - canvasBounds.y, - canvasBounds.width, - canvasBounds.height - ); - _this.osd.viewport.fitBounds(rect, true); // center viewport before image is placed. - - canvasModel.show(); - canvasModel.getVisibleImages().forEach(function(imageResource) { - _this.loadImage(null, imageResource); - }); - - _this.osd.addHandler('zoom', $.debounce(function(){ - var point = { - 'x': -10000000, - 'y': -10000000 - }; - _this.eventEmitter.publish('updateTooltips.' + _this.windowId, [point, point]); - }, 30)); - - _this.osd.addHandler('pan', $.debounce(function(){ - var point = { - 'x': -10000000, - 'y': -10000000 - }; - _this.eventEmitter.publish('updateTooltips.' + _this.windowId, [point, point]); - }, 30)); - - // Maintain this as an external API. - _this.eventEmitter.publish('osdOpen.'+_this.windowId); - _this.addAnnotationsLayer(_this.elemAnno); - - if (_this.osdOptions.osdBounds) { - var newBounds = new OpenSeadragon.Rect(_this.osdOptions.osdBounds.x, _this.osdOptions.osdBounds.y, _this.osdOptions.osdBounds.width, _this.osdOptions.osdBounds.height); - _this.osd.viewport.fitBounds(newBounds, true); - } else { - // else reset bounds for this image - _this.setBounds(); - } - - // get the state before resetting it so we can get back to that state - var originalState = _this.hud.annoState.current; - var selected = _this.element.find('.mirador-osd-edit-mode.selected'); - var shape = null; - if (selected) { - shape = selected.find('.material-icons').html(); - } - if (originalState === 'none') { - _this.hud.annoState.startup(); - } else if (originalState === 'off' || _this.annotationState === 'off') { - //original state is off, so don't need to do anything - } else { - _this.hud.annoState.displayOff(); - } - - if (originalState === 'pointer' || _this.annotationState === 'on') { - _this.hud.annoState.displayOn(); - } else if (originalState === 'shape') { - _this.hud.annoState.displayOn(); - _this.hud.annoState.chooseShape(shape); - } else { - //original state is off, so don't need to do anything - } - - _this.osd.addHandler('zoom', $.debounce(function() { - _this.setBounds(); - }, 500)); - - _this.osd.addHandler('pan', $.debounce(function(){ - _this.setBounds(); - }, 500)); - }, - - //TODO reuse annotationsLayer with IIIFManifestLayouts - addAnnotationsLayer: function(element) { - var _this = this; - _this.annotationsLayer = new $.AnnotationsLayer({ - state: _this.state, - annotationsList: _this.state.getWindowAnnotationsList(_this.windowId) || [], - viewer: _this.osd, - windowId: _this.windowId, - element: element, - eventEmitter: _this.eventEmitter - }); - }, - - updateImage: function(canvasID) { - var _this = this; - if (this.canvasID !== canvasID) { - this.canvases[_this.canvasID].getVisibleImages().forEach(function(imageResource){ - imageResource.hide(); - }); - this.canvasID = canvasID; - this.currentImgIndex = $.getImageIndexById(this.imagesList, canvasID); - this.currentImg = this.imagesList[this.currentImgIndex]; - - var newCanvas = this.canvases[_this.canvasID]; - var canvasBounds = newCanvas.getBounds(); - var rect = new OpenSeadragon.Rect( - canvasBounds.x, - canvasBounds.y, - canvasBounds.width, - canvasBounds.height - ); - _this.osd.viewport.fitBounds(rect, true); // center viewport before image is placed. - newCanvas.show(); - - this.osdOptions = { - osdBounds: null, - zoomLevel: null - }; - this.eventEmitter.publish('resetImageManipulationControls.'+this.windowId); - } - _this.eventEmitter.publish('UPDATE_FOCUS_IMAGES.' + this.windowId, {array: [canvasID]}); - }, - - next: function() { - var _this = this; - var next = this.currentImgIndex + 1; - if (next < this.imagesList.length) { - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[next]['@id']); - } - }, - - previous: function() { - var _this = this; - var prev = this.currentImgIndex - 1; - - if (prev >= 0) { - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[prev]['@id']); - } - } - }; - -}(Mirador)); diff --git a/js/src/widgets/layersTab.js b/js/src/widgets/layersTab.js deleted file mode 100644 index eb6b74853bce404e935c826a4ea26dc70697a4c0..0000000000000000000000000000000000000000 --- a/js/src/widgets/layersTab.js +++ /dev/null @@ -1,232 +0,0 @@ -(function($) { - - $.LayersTab = function(options) { - jQuery.extend(true, this, { - windowId: null, - element: null, - appendTo: null, - manifest: null, - visible: null, - state: null, - eventEmitter: null, - canvasID: null, - canvases: null - }, options); - - this.init(); - }; - - $.LayersTab.prototype = { - init: function() { - var _this = this; - - this.localState({ - id: 'layersTab', - visible: this.visible, - active: true, // needs to be a function of the window state - canvasID: _this.canvasID, - empty: false // needs to be a function of the canvasModel - }, true); - - this.render(this.localState()); - this.bindEvents(); - this.listenForActions(); - }, - - localState: function(state, initial) { - var _this = this; - if (!arguments.length) return this.layerTabState; - this.layerTabState = state; - - if (!initial) { - _this.eventEmitter.publish('layersTabStateUpdated.' + this.windowId, this.layerTabState); - } - - return this.layerTabState; - }, - - tabStateUpdated: function(visible) { - var localState = this.localState(); - localState.visible = visible; - - this.localState(localState); - }, - - canvasIdUpdated: function(event, canvasID) { - var localState = this.localState(); - localState.canvasID = canvasID; - - this.localState(localState); - }, - - imageFocusUpdated: function(focus) { - var localState = this.localState(); - localState.active = (focus !== 'ImageView') ? false : true; - - this.localState(localState); - }, - - updateImageResourceStatus: function(event, imageResource) { - var _this = this; - - ['loaded', 'requested', 'initialized', 'drawn'].forEach(function(statusString){ - _this.element.find('.layers-list-item[data-imageid="'+ imageResource.id + '"]').removeClass(statusString); - }); - - this.element.find('.layers-list-item[data-imageid="'+ imageResource.id + '"]').addClass(imageResource.getStatus()); - }, - showImageResource: function(event, imageResource) { - this.element.find('.visibility-toggle[data-imageid="'+ imageResource.id + '"]').prop('checked', true); - this.element.find('.opacity-slider[data-imageid="'+ imageResource.id + '"]').prop('disabled', false); - this.element.find('.opacity-label[data-imageid="'+ imageResource.id + '"]').removeClass('disabled').text("(" + Math.ceil(imageResource.getOpacity()*100) + ")%"); - }, - hideImageResource: function(event, imageResource) { - this.element.find('.visibility-toggle[data-imageid="'+ imageResource.id + '"]').prop('checked', false); - this.element.find('.opacity-slider[data-imageid="'+ imageResource.id + '"]').prop('disabled', true); - this.element.find('.opacity-label[data-imageid="'+ imageResource.id + '"]').addClass('disabled').text("(" + i18next.t('disabledOpacityMessage') + ")"); - }, - updateImageResourceOpacity: function(event, imageResource) { - this.element.find('.opacity-slider[data-imageid="'+ imageResource.id + '"]').val(imageResource.getOpacity()*100); - this.element.find('.opacity-label[data-imageid="'+ imageResource.id + '"]').text("(" + Math.ceil(imageResource.getOpacity()*100) + ")%"); - }, - - listenForActions: function() { - var _this = this; - - // This event is fired by the component itself anytime its local state is updated. - _this.eventEmitter.subscribe('layersTabStateUpdated.' + _this.windowId, function(_, data) { - _this.render(data); - }); - - _this.eventEmitter.subscribe('tabStateUpdated.' + _this.windowId, function(_, data) { - var visible = data.tabs[data.selectedTabIndex].options.id === 'layersTab'; - _this.tabStateUpdated(visible); - }); - - _this.eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, _this.canvasIdUpdated.bind(_this)); - _this.eventEmitter.subscribe('image-status-updated' + _this.windowId, _this.updateImageResourceStatus.bind(_this)); - _this.eventEmitter.subscribe('image-show' + _this.windowId, _this.showImageResource.bind(_this)); - _this.eventEmitter.subscribe('image-hide' + _this.windowId, _this.hideImageResource.bind(_this)); - _this.eventEmitter.subscribe('image-opacity-updated' + _this.windowId, _this.updateImageResourceOpacity.bind(_this)); - - _this.eventEmitter.subscribe('focusUpdated' + _this.windowId, function(event, focus) { - - - // update the disabled state of the layersTab - // since it cannot be used in overview mode - // but is visible/available in image mode. - _this.imageFocusUpdated(focus); - }); - }, - - bindEvents: function() { - var _this = this; - - this.element.find('img').on('load', function(event) { - // fades in thumbs when they finish loading. - jQuery(this).addClass('loaded'); - jQuery(this).closest('.thumb-container').removeClass('awaiting-thumbnail'); - }); - - this.element.find('img').on('error', function(event) { - // prevents failed images from showing. - jQuery(this).addClass('failed'); - jQuery(this).closest('.thumb-container').removeClass('awaiting-thumbnail'); - jQuery(this).closest('.thumb-container').addClass('thumb-failed'); - }); - - this.element.on('input', '.opacity-slider', function(event) { - var canvasModel = _this.canvases[_this.localState().canvasID], - eventedImageResource = canvasModel.getImageById(event.currentTarget.attributes['data-imageid'].nodeValue); - - eventedImageResource.setOpacity(event.currentTarget.value/100); - }); - - this.element.on('change', '.visibility-toggle', function(event) { - var canvasModel = _this.canvases[_this.localState().canvasID], - eventedImageResource = canvasModel.getImageById(event.currentTarget.attributes['data-imageid'].nodeValue); - if(event.currentTarget.checked) { - eventedImageResource.show(); - } else { - eventedImageResource.hide(); - } - }); - }, - - render: function(state) { - var _this = this, - canvasModel = _this.canvases[state.canvasID], - templateData = { - active: state.active ? '' : 'inactive', - imagesFor: i18next.t('imagesFor'), - hasLayers: canvasModel.images.length > 0, - canvasTitle: canvasModel.label, - disabledLayersTabMessage: i18next.t('disabledLayersTabMessage'), - layers: canvasModel.images.map(function(imageResource){ - return { - visibleLabel: i18next.t('visibleLabel'), - opacityLabel: i18next.t('opacityLabel'), - disabledOpacityMessage: i18next.t('disabledOpacityMessage'), - emptyTemplateMessage: i18next.t('emptyTemplateMessage'), - imageId: imageResource.id, - title: imageResource.label === 'No Label' ? i18next.t('noLabel') : imageResource.label, - opacity: imageResource.getOpacity()*100, // scale factor for limitations of html5 slider element - loadingStatus: imageResource.getStatus(), - visibility: imageResource.getVisible(), - url: imageResource.thumbUrl - }; - }) - }; - - if (this.element) { - _this.appendTo.find(".layersPanel").remove(); - } - this.element = jQuery(_this.template(templateData)).appendTo(_this.appendTo); - - _this.bindEvents(); - - if (state.visible) { - this.element.show(); - } else { - this.element.hide(); - } - }, - - template: $.Handlebars.compile([ - '<div class="layersPanel {{active}}">', - '<h3>{{imagesFor}} {{canvasTitle}}</h3>', - '{{#if hasLayers}}', - '<ul class="layers-listing">', - '{{#each layers}}', - '<li class="layers-list-item {{loadingStatus}}" data-imageid="{{imageId}}">', - '<h4>{{this.title}}</h4>', - '<div class="thumb-container awaiting-thumbnail">', - '<img class="layer-thumb" src="{{url}}" alt="{{canvasTitle}} title="{{canvasTitle}}">', - '<span class="spinner"><i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i></span>', - '<span class="failed"><i class="fa fa-ban fa-3x fa-fw"></i></span>', - '<span class="thumb-failed"><i class="fa fa-picture-o fa-3x fa-fw"></i></span>', - '</div>', - '<form>', - '<div>', - '<input class="visibility-toggle" data-imageid="{{imageId}}" type=checkbox {{#if visibility}}checked{{/if}}>', - '<label> {{this.visibleLabel}}</label>', - '</div>', - '<label>{{this.opacityLabel}} <span class="opacity-label {{#unless visibility}}disabled{{/unless}}" data-imageid="{{imageId}}">', - '{{#unless visibility}}({{this.dsabledOpacityLabel}}){{else}}({{opacity}})%{{/unless}}', - '</span></label>', - '<input class="opacity-slider" data-imageid="{{imageId}}" type="range" min="0" max="100" step="2" value="{{opacity}}" {{#unless visibility}}disabled{{/unless}}>', - '</form>', - '</li>', - '{{/each}}', - '</ul>', - '{{else}}', - '<h4>{{emptyTemplateMessage}}</h4>', - '{{/if}}', - '<div class="disabled-overlay">', - '<h3>{{disabledLayersTabMessage}}</h3>', - '</div>', - '</div>', - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/widgets/metadataView.js b/js/src/widgets/metadataView.js deleted file mode 100755 index 9c71f9ba6c90e2758f23f3bcb93f74efdea82b1a..0000000000000000000000000000000000000000 --- a/js/src/widgets/metadataView.js +++ /dev/null @@ -1,300 +0,0 @@ -(function($) { - - $.MetadataView = function(options) { - - jQuery.extend(this, { - manifest: null, - element: null, - metadataTypes: null, - metadataListingCls: 'metadata-listing' - }, options); - - this.init(); - }; - - $.MetadataView.prototype = { - - init: function() { - var _this = this, - tplData = { - metadataListingCls: this.metadataListingCls - }; - - _this.manifest = _this.manifest.jsonLd; - this.metadataTypes = {}; - - this.metadataTypes.details = _this.getMetadataDetails(_this.manifest); - this.metadataTypes.rights = _this.getMetadataRights(_this.manifest); - this.metadataTypes.links = _this.getMetadataLinks(_this.manifest); - - //vvvvv This is *not* how this should be done. - jQuery.each(this.metadataTypes, function(metadataKey, metadataValues) { - tplData[metadataKey] = []; - - jQuery.each(metadataValues, function(idx, itm) { - if (typeof itm.value === 'object') { - itm.value = _this.stringifyObject(itm.value); - } - - if (typeof itm.value === 'string' && itm.value !== '') { - tplData[metadataKey].push({ - identifier: itm.identifier || '', - label: _this.extractLabelFromAttribute(itm.label), - value: (metadataKey === 'links') ? itm.value : _this.addLinksToUris(itm.value) - }); - } - }); - }); - - if (_this.manifest.logo) { - var logo = ''; - if (typeof _this.manifest.logo === "string") { - logo = _this.manifest.logo; - } else if (typeof _this.manifest.logo['@id'] !== 'undefined') { - logo = _this.manifest.logo['@id']; - } - tplData.logo = logo; - } - - this.element = jQuery(this.template(tplData)).appendTo(this.appendTo); - this.bindEvents(); - }, - - // Base code from https://github.com/padolsey/prettyprint.js. Modified to fit Mirador needs - stringifyObject: function(obj, nestingMargin) { - var type = typeof obj, - _this = this, - str, - first = true, - increment = 15, - delimiter = '<br/>'; - - if (obj instanceof RegExp) { - return '/' + obj.source + '/'; - } - - if (typeof nestingMargin === 'undefined') { - nestingMargin = 0; - } - - if (obj instanceof Array) { - str = '[ '; - jQuery.each(obj, function (i, item) { - str += (i === 0 ? '' : ', ') + _this.stringifyObject(item, nestingMargin + increment); - }); - return str + ' ]'; - } - - if (typeof obj === 'object' && obj['@type'] === 'sc:Collection') { - var collectionUrl = obj['@id']; - var collectionLabel = obj.label || collectionUrl; - return '<a href="' + collectionUrl + '" target="_blank">' + collectionLabel + '</a>'; - } else if (typeof obj === 'object') { - str = '<div style="margin-left:' + nestingMargin + 'px">'; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - str += (first ? '' : delimiter) + i + ': ' + _this.stringifyObject(obj[i], nestingMargin + increment); - first = false; - } - } - - return str + '</div>'; - } - return obj.toString(); - }, - - stringifyRelated: function(obj) { - var _this = this, - str, - next, - label, - format; - if (obj instanceof Array) { - str = ''; - jQuery.each(obj, function (i, item) { - next = _this.stringifyRelated(item); - if (next !== '') str += (i === 0 ? '' : '<br/>') + next; - }); - return str; - } - - if (typeof obj === 'object' && '@id' in obj) { - label = ('label' in obj)? obj.label : obj['@id']; - format = ('format' in obj && obj.format !== 'text/html')? '(' + obj.format + ')' : ''; - return '<a href="' + obj['@id'] + '" target="_blank">' + label + '</a> ' + format; - } - - return _this.addLinksToUris(obj.toString()); - }, - - getMetadataDetails: function(jsonLd) { - var mdList = [ - { label: i18next.t('label'), - value: '<b>' + ($.JsonLd.getTextValue(jsonLd.label) || '') + '</b>' }, - { label: i18next.t('description'), - value: $.JsonLd.getTextValue(jsonLd.description) || '' } - ]; - - if (jsonLd.metadata) { - value = ""; - label = ""; - jQuery.each(jsonLd.metadata, function(index, item) { - label = $.JsonLd.getTextValue(item.label); - value = $.JsonLd.getTextValue(item.value); - mdList.push({label: label, value: value}); - }); - } - - return mdList; - }, - - getMetadataRights: function(jsonLd) { - return [ - { - identifier: 'license', - label: i18next.t('license'), - value: jsonLd.license || '' - }, { - identifier: 'attribution', - label: i18next.t('attribution'), - value: $.JsonLd.getTextValue(jsonLd.attribution) || '' - } - ]; - }, - - getMetadataLinks: function(jsonLd) { - // #414 - return [ - { - identifier: 'related', - label: i18next.t('related'), - value: this.stringifyRelated(jsonLd.related || '') - }, { - identifier: 'seeAlso', - label: i18next.t('seeAlso'), - value: this.stringifyRelated(jsonLd.seeAlso || '') - }, { - identifier: 'manifest', - label: i18next.t('manifest'), - value: this.stringifyRelated(jsonLd['@id'] || '') - }, { - identifier: 'within', - label: i18next.t('within'), - value: this.getWithin(jsonLd.within || '') - } - ]; - }, - - getWithin: function(within) { - if (typeof within === 'object' && within['@type'] === 'sc:Collection') { - var collectionUrl = within['@id']; - var collectionLabel = within.label || collectionUrl; - return '<a href="' + collectionUrl + '" target="_blank">' + collectionLabel + '</a>'; - } else if (within instanceof Array) { - return within.map(this.getWithin, this).join("<br/>"); - } else { - return this.stringifyObject(within); - } - }, - - extractLabelFromAttribute: function(attr) { - var label = attr; - - label = label.replace(/^@/, ''); - label = label.replace(/\s{2,}/g, ' '); - - return label; - }, - - bindEvents: function() { - }, - - toggle: function(stateValue) { - if (stateValue) { - this.show(); - } else { - this.hide(); - } - }, - - show: function() { - var element = jQuery(this.element); - if (this.panel) { - element = element.parent(); - } - element.show({effect: "slide", direction: "right", duration: 300, easing: "swing"}); - }, - - hide: function() { - var element = jQuery(this.element); - if (this.panel) { - element = element.parent(); - } - element.hide({effect: "slide", direction: "right", duration: 300, easing: "swing"}); - }, - - addLinksToUris: function(text) { - // http://stackoverflow.com/questions/8188645/javascript-regex-to-match-a-url-in-a-field-of-text - var regexUrl = /(http|ftp|https):\/\/[\w\-]+(\.[\w\-]+)+([\w.,@?\^=%&:\/~+#\-]*[\w@?\^=%&\/~+#\-])?/gi, - textWithLinks = text, - matches, - parsedTextWithLinks; - - if (typeof text === 'string') { - if (textWithLinks.indexOf('<a ') === -1) { - matches = text.match(regexUrl); - - if (matches) { - jQuery.each(matches, function(index, match) { - textWithLinks = textWithLinks.replace(match, '<a href="' + match + '" target="_blank">' + match + '</a>'); - }); - } - } else { - parsedTextWithLinks = jQuery('<div />').append(textWithLinks); - jQuery(parsedTextWithLinks[0]).find('a').attr('target', '_blank'); - textWithLinks = parsedTextWithLinks[0].innerHTML; - } - } - - return textWithLinks; - }, - - template: $.Handlebars.compile([ - '<div class="sub-title">{{t "details"}}:</div>', - '<div class="{{metadataListingCls}}">', - '{{#each details}}', - '<div class="metadata-item"><div class="metadata-label">{{label}}:</div><div class="metadata-value">{{{value}}}</div></div>', - '{{/each}}', - '</div>', - '<div class="sub-title">{{t "rights"}}:</div>', - '{{#if rights}}', - '<div class="{{metadataListingCls}}">', - '{{#each rights}}', - '<div class="metadata-item {{identifier}}"><div class="metadata-label">{{label}}:</div><div class="metadata-value">{{{value}}}</div></div>', - '{{/each}}', - '{{#if logo}}', - '<div class="metadata-item"><div class="metadata-label">{{t "logo"}}:</div><img class="metadata-logo" src="{{logo}}"/></div>', - '{{/if}}', - '</div>', - '{{else}}', - '<div class="{{metadataListingCls}}">', - '<div class="metadata-item"><div class="metadata-label">{{t "rightsStatus"}}:</div><div class="metadata-value">{{t "unspecified"}}</div></div>', - '</div>', - '{{/if}}', - '{{#if links}}', - '<div class="sub-title">{{t "links"}}:</div>', - '<div class="{{metadataListingCls}}">', - '{{#each links}}', - '<div class="metadata-item {{identifier}}"><div class="metadata-label">{{label}}:</div><div class="metadata-value">{{{value}}}</div></div>', - '{{/each}}', - // '{{#if relatedLinks}}', - // '<dt>{{label}}:</dt><dd>{{{value}}}</dd>', - // '{{/if}}', - '</dl>', - '{{/if}}' - - ].join(''), { noEscape: true }) - - }; - -}(Mirador)); diff --git a/js/src/widgets/scrollView.js b/js/src/widgets/scrollView.js deleted file mode 100755 index 5c7b05b6deb867f41ba3fc4e1afafcd9e24cf490..0000000000000000000000000000000000000000 --- a/js/src/widgets/scrollView.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - $.ScrollView = function(options) { - - jQuery.extend(this, { - currentImgIndex: 0, - canvasID: null, - focusImages: [], - manifest: null, - element: null, - imagesList: [], - appendTo: null, - thumbInfo: {thumbsHeight: 150, listingCssCls: 'listing-thumbs', thumbnailCls: 'thumbnail-view'}, - windowId: null, - panel: false, - vDirectionStatus: '', - lazyLoadingFactor: 1.5 //should be >= 1 - }, options); - - jQuery.extend($.ScrollView.prototype, $.ThumbnailsView.prototype); - this.init(); - if(this.vDirectionStatus == 'rtl') { - jQuery(this.appendTo).find('.scroll-view').addClass('v-direction-rtl'); - } - }; - -}(Mirador)); diff --git a/js/src/widgets/searchTab.js b/js/src/widgets/searchTab.js deleted file mode 100644 index 362cdea987960b6c378698a6911949afd2203767..0000000000000000000000000000000000000000 --- a/js/src/widgets/searchTab.js +++ /dev/null @@ -1,189 +0,0 @@ -(function($) { - - $.SearchTab = function(options) { - jQuery.extend(true, this, { - element: null, - appendTo: null, - manifest: null, - visible: null, - canvasID: null, - windowId: null, - eventEmitter: null, - }, options); - - this.init(); - }; - - $.SearchTab.prototype = { - init: function() { - var _this = this; - this.windowId = this.windowId; - - this.localState({ - id: 'searchTab', - visible: this.visible, - }, true); - - this.listenForActions(); - this.render(this.localState()); - this.loadTabComponents(); - }, - - localState: function(state, initial) { - if (!arguments.length) return this.searchTabState; - this.searchTabState = state; - - if (!initial) { - this.eventEmitter.publish('searchTabStateUpdated.' + this.windowId, this.searchTabState); - } - - return this.searchTabState; - }, - - loadTabComponents: function() { - var _this = this; - }, - - tabStateUpdated: function(data) { - if (data.tabs[data.selectedTabIndex].options.id === 'searchTab') { - this.element.show(); - } - else { - this.element.hide(); - } - }, - - toggle: function() {}, - - listenForActions: function() { - var _this = this; - - //jQuery.subscribe('searchTabStateUpdated.' + _this.windowId, function(_, data) { - // _this.render(data); - //}); - - this.eventEmitter.subscribe('tabStateUpdated.' + _this.windowId, function(_, data) { - _this.tabStateUpdated(data); - }); - - // eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, function(event) { - // - // }); - }, - - displaySearchWithin: function(query_params, searchUrl){ - var _this = this; - if (query_params !== "") { - - this.searchObject = new $.SearchWithinResults({ - manifest: _this.manifest, - appendTo: _this.element.find(".search-results-list"), - panel: true, - canvasID: _this.canvasID, - windowId: _this.windowId, - imagesList: _this.imagesList, - thumbInfo: {thumbsHeight: 80, listingCssCls: 'panel-listing-thumbs', thumbnailCls: 'panel-thumbnail-view'}, - query_params: query_params, - searchService: searchUrl, - eventEmitter: _this.eventEmitter - }); - } - }, - - bindEvents: function() { - var _this = this; - - this.element.find(".js-perform-query").on('submit', function(event){ - event.preventDefault(); - - var query = _this.element.find(".js-query").val(); - var motivation = _this.element.find(".js-motivation").val(); - var date = _this.element.find(".js-date").val(); - var user = _this.element.find(".js-user").val(); - var searchUrl = _this.element.find("#search-within-selector").val(); - - _this.displaySearchWithin({ - "q": query, - "motivation": motivation, - "date": date, - "user": user - }, searchUrl); - - }); - - this.element.find(".js-search-expand").on('click', function(event){ - event.preventDefault(); - - _this.element.find(".js-search-expanded").slideToggle("fast"); - - if (jQuery(this).text() === i18next.t("more")){ - jQuery(this).text(i18next.t("less")); - } - else if (jQuery(this).text() === i18next.t("less")){ - jQuery(this).text(i18next.t("more")); - } - }); - - }, - - render: function(state) { - var _this = this; - - var searchService = this.manifest.getSearchWithinService(), - searchServiceIdArray = searchService && searchService.map(function(data){ - return { - "url": data['@id'], - "label": data.label - }; - }); - - var templateData = { - searchService: searchServiceIdArray - }; - - if (!this.element) { - this.element = jQuery(_this.template(templateData)).appendTo(_this.appendTo); - _this.bindEvents(); - } else { - _this.appendTo.find(".search-results").remove(); - this.element = jQuery(_this.template(templateData)).appendTo(_this.appendTo); - } - - if (state.visible) { - this.element.show(); - } else { - this.element.hide(); - } - }, - - template: $.Handlebars.compile([ - '<div class="search-results">', - '{{#if searchService}}', - '<label for="search-within-selector">{{t "searchLabelSelect"}}</label>', - '<select id="search-within-selector" style="width: 100%">', - '{{#each searchService}}', - '<option value="{{ url }}">{{#if label}}{{ label }}{{ else }} {{ url }}{{/if}}</option>', - '{{/each}}', - '</select>', - '<form id="search-within-form" class="js-perform-query">', - '<input class="js-query" type="text" placeholder="{{t "searchText"}}"/>', - - '<input style="margin: 10px 0" type="submit" value="{{t "submit"}}"/>', - - '<div style="margin-bottom: 5px"><a class="js-search-expand" href="#">{{t "more"}}</a></div>', - '<div class="js-search-expanded" style="display: none;">', - '<input class="js-motivation" type="text" placeholder="motivation"/>', - '<input class="js-date" type="text" placeholder="date"/>', - '<input class="js-user" type="text" placeholder="user"/>', - // '<input class="js-box" type="text" placeholder="box: x, y, w, h"/>', - '</div>', - '</form>', - '<div class="search-results-list"></div>', - '{{else}}', - '{{t "searchNotAvailable"}}', - '{{/if}}', - '</div>', - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/widgets/searchWithinResults.js b/js/src/widgets/searchWithinResults.js deleted file mode 100644 index c5953c5d183ed43d0d01ea9ed18df887920c2f51..0000000000000000000000000000000000000000 --- a/js/src/widgets/searchWithinResults.js +++ /dev/null @@ -1,490 +0,0 @@ -(function($) { - -/** - * UI + logic to get search results for a given search query. On initialization, - * the provided search query is given to the provided IIIF Search service. - * The response is displayed as a list. - * - * Parameter 'query_params': {q: query, motivation: motivation, date: date, user: user} - * - * Currently follows IIIF Content Search API v1.0 - * (http://iiif.io/api/search/0.9/) - */ -$.SearchWithinResults = function(options) { - - jQuery.extend(this, { - manifest: null, - element: null, - metadataTypes: null, - metadataListingCls: 'metadata-listing', - /** Search service URL */ - searchService: null, - windowId: null, - /** {q: query, motivation: motivation, date: date, user: user} */ - query_params: null, - /** Used for paging. This assumes that searches start on page 1... */ - currentPage: 1, - eventEmitter: null - }, options); - - this.init(); -}; - -$.SearchWithinResults.prototype = { - - init: function() { - this.registerHandlebars(); - - jQuery(this.appendTo).empty(); - this.element = jQuery(this.template()).appendTo(this.appendTo); - jQuery("<h3>Search results for: " + this.query_params.q + "</h3>") - .appendTo(this.appendTo.find('.search-results-messages')); - this.doSearchFromQuery(this.query_params); - }, - - doSearchFromQuery: function(query_params) { - query_string = ""; - for (var param in query_params){ - if (param === "q"){ - query_string += param + "=" + query_params[param]; - } - else if (query_params[param].length > 0){ - query_string += "&" + param + "=" + query_params[param]; - } - } - - var url = this.searchService + '?' + query_string; - this.doSearchFromUrl(url); - }, - - /** - * AJAX request is made from here! - * - * TODO Perhaps emit a search event here for the purposes of - * state tracking or analytics? - * - * @param {[type]} url [description] - * @return {[type]} [description] - */ - doSearchFromUrl: function(url) { - var _this = this; - - this.element.find('.search-results-container').empty(); - - jQuery.ajax({ - url: url, - dataType: 'json', - async: true - }) - .done(function(searchResults) { - if (searchResults.resources) { - // display result totals - _this.displayResultCounts(searchResults); - // show results list - _this.processResults(searchResults); - } else { - jQuery('.search-results-count').html("<p>No results</p>"); - } - }) - .fail(function() { - jQuery('.search-results-count').html("<p>No results</p>"); - }) - .always(); - }, - - - displayResultCounts: function(searchResults){ - var total = searchResults.within.total, - startResultNumber = searchResults.startIndex + 1, - endResultNumber = ""; - - //if there is only only resource, it will not be array and therefore we can't - //take the length of it; this conditions check first to see if the resources - //property contains an array or single object - - // TODO: not that this single object vs. array seems to be problem throughout. - // Pages with only one result do not display properly. See for example: - // http://exist.scta.info/exist/apps/scta/iiif/pl-zbsSII72/search?q=fides&page=3 - - if (searchResults.resources.constructor === Array) { - endResultNumber = searchResults.startIndex + searchResults.resources.length; - } else { - endResultNumber = searchResults.startIndex + 1; - } - - jQuery('.search-results-count').html("<p>Showing " + startResultNumber + " - " + endResultNumber + " out of " + total + "</p>"); - }, - - processResults: function(searchResults) { - //create tplData array - if (searchResults.hits) { - this.tplData = this.getHits(searchResults); - } else { - this.tplData = this.getSearchAnnotations(searchResults); - } - jQuery($.Handlebars.compile('{{> resultsList }}')(this.tplData)).appendTo(jQuery(this.element.find('.search-results-container'))); - this.bindEvents(); - - this.setPager(searchResults); - }, - - /** - * Look for necessary properties that point to the need for paging. - * Check for total number of results vs number of returned results. - * - * @param results IIIF Search results - * @return TRUE if paging is needed - */ - needsPager: function(results) { - // Check for some properties on the search results - if (!results || !results.within || !results.resources) { - return false; - } - var total = results.within.total; - // Check if 'resources' (list of annotations) is an array, or single value - if (Array.isArray(results.resources)) { - return results.resources.length < total; - } else { - return total > 1; - } - }, - - /** - * Initialize search results pager. It is assumed that it has already - * been determined whether or not the pager needs to be created. - * If a pager is created, it will be inserted into the DOM. - * - * If it is determined that this set of results does not need paging, - * then this function will exit early and no paging will be set. - * {@link SearchWithinResults#needsPager} - * - * @param results - IIIF Search results - */ - setPager: function(searchResults) { - var _this = this; - var pager = this.element.find('.search-results-pager'); - - // HACK: pager.pagination will be undefined until canvasID are set properly - if (!this.needsPager(searchResults) || !pager.pagination) { - return; - } - - /* - * Hack to get proper page numbers. - * TODO probably shouldn't use this library if it requires page numbers, - * instead have something with ONLY FIRST/LAST and PREV/NEXT controls. - */ - if (!this.onPageCount) { // This will be set with initial page and not be changed. - this.onPageCount = searchResults.resources.length; - } - - pager.pagination({ - items: searchResults.within.total, - itemsOnPage: _this.onPageCount, - currentPage: _this.currentPage, - displayedPages: 1, - edges: 1, - ellipsePageSet: false, - cssStyle: 'compact-theme', - hrefTextPrefix: '', - prevText: '<i class="fa fa-lg fa-angle-left"></i>', - nextText: '<i class="fa fa-lg fa-angle-right"></i>', - onPageClick: function(pageNumber, event) { - event.preventDefault(); - pager.pagination('disable'); - - if (pageNumber == _this.currentPage - 1) { - _this.currentPage--; - _this.doSearchFromUrl(searchResults.prev); - } else if (pageNumber == _this.currentPage + 1) { - _this.currentPage++; - _this.doSearchFromUrl(searchResults.next); - } else if (pageNumber == 1) { - _this.doSearchFromUrl(searchResults.within.first); - _this.currentPage = 1; - } else { - // Assume this is the last page........ - _this.doSearchFromUrl(searchResults.within.last); - /* - * NOTE: There is no good way to get the page number from the search URL. - * IIIF Content Search v1.0 spec (I do not think) does not define - * how to specify a page. - * -- For example, the page could be put into the URL - * query string, or it could be put into the URL fragment, or somewhere - * else. - * - * This hack pulls the number of the last page on the pager. :/ - */ - _this.currentPage = parseInt( - _this.element.find('.search-results-pager li:nth-last-child(2)').text() - ); - } - } - }); - pager.pagination('enable'); - }, - - /** - * Do a Bitwise OR to truncate decimal - * - * @param num original number, could be integer or decimal - * @return integer with any decimal part of input truncated (no rounding) - */ - float2int: function(num) { - return num | 0; - }, - - parseSearchAnnotation: function(annotation){ - var _this = this; - var canvasid = annotation.on; - // deals with possibiliy of "on" propert taking an object - if (typeof canvasid === 'object') { - canvasid = annotation.on['@id']; - } - - var canvaslabel = _this.getLabel(annotation); - - // Split ID from Coordinates if necessary - var id_parts = _this.splitBaseUrlAndCoordinates(canvasid); - - return { - canvasid: id_parts.base, - coordinates: id_parts.coords, - canvaslabel: canvaslabel, - resulttext: annotation.resource.chars - }; - }, - - getSearchAnnotations: function(searchResults) { - var _this = this; - tplData = []; - //add condition here to make sure searchResults.resources is not null - if (searchResults.resources !== null) { - //This conditional handles if the results come back as a single object or as an array - //TODO: This possibility is not yet handled in the getHits function - if (!Array.isArray(searchResults.resources)){ - annotation = searchResults.resources; - tplData.push(_this.parseSearchAnnotation(annotation)); - } - else { - searchResults.resources.forEach(function(annotation){ - tplData.push(_this.parseSearchAnnotation(annotation)); - }); - } - return tplData; - } - }, - - getHits: function(searchResults) { - var _this = this; - tplData = []; - searchResults.hits.forEach(function(hit) { - //this seems like a really slow way to retrieve on property from hits - //note that at present it is only retrieving the first annotation - //but a hit annotation property takes an array and could have more than one - //annotation -- its not a very common case but a possibility. - var resultObject, resultObjects = []; - hit.annotations.forEach(function(annotation) { - //canvases could come back as an array - var resource = _this.getHitResources(searchResults, annotation)[0], - canvasLabel = _this.getLabel(resource), - canvasID = resource && resource.on; - // If you have the full annotation, set ID and label appropriately - if (typeof canvasID === 'object') { - canvasID = resource.on['@id']; - } - // Extract coordinates if necessary - var canvasIDParts = _this.splitBaseUrlAndCoordinates(canvasID); - resultObject = { - canvasid: canvasIDParts.base, - coordinates: canvasIDParts.coords, - canvaslabel: canvasLabel, - hit: hit // TODO must handle different results structures, see IIIF search spec for different responses - }; - resultObjects.push(resultObject); - }); - // First result is returned and gets attached an array of all annotations - if (resultObjects) { - resultObject = resultObjects[0]; - if (resultObjects.length > 1) { - resultObject.annotations = resultObjects; - } - tplData.push(resultObject); - } - }); - return tplData; - }, - - /** - * Get a label describing a search match. This label is set to the - * associated annotation label, if available, or to the label of the - * parent canvas. - * - * @param {[type]} resource annotation associated with the search match - * @return {[type]} string label - */ - getLabel: function(resource) { - var label; - - if (resource && typeof resource === 'object') { - if (resource.label) { - return resource.label; - } else if (resource.resource.label){ - return resource.resource.label; - } else if (resource.on && typeof resource.on === 'string') { - label = this.manifest.getCanvasLabel(resource.on); - return label ? 'Canvas ' + label : undefined; - } else if (resource.on && typeof resource.on === 'object') { - label = resource.on.label ? resource.on.label : this.manifest.getCanvasLabel(resource.on['@id']); - return label ? 'Canvas ' + label : undefined; - } - } else { - return undefined; - } - }, - - getHitResources: function(searchResults, annotationid) { - // Get array of results - return searchResults.resources.filter(function(resource){ - return resource['@id'] === annotationid; - }); - }, - - /** - * @param url - a resource ID - * @return { - * base: base URL, or the original url param if no coords are present, - * coords: coordinates from ID if present - * } - */ - splitBaseUrlAndCoordinates: function(url) { - var coordinates; - var base = url; - - if (typeof url === 'string') { - // Separate base ID from fragment selector - var parts = url.split('#'); - - base = parts[0]; - if (parts.length === 2) { - coordinates = parts[1]; - } - } - - return { - base: base, - coords: coordinates - }; - }, - - bindEvents: function() { - var _this = this; - - // jQuery.subscribe(('currentCanvasIDUpdated.' + _this.windowId), function(event, canvasID) { - // //if (!_this.structures) { return; } - // //_this.setSelectedElements($.getRangeIDByCanvasID(_this.structures, canvasID)); - // //_this.render(); - // - // }); - - //TODO - //This function works to move the user to the specified canvas - //but if there are associated coordinates, it does not yet know how to highlight - //those coordinates. - - //thie miniAnnotatList attempted to do this, but is no longer working - //it needs to be replaced by a new strategy. - - this.element.find('.js-show-canvas').on("click", function(event) { - event.stopPropagation(); - - var canvasid = jQuery(this).attr('data-canvasid'), - coordinates = jQuery(this).attr('data-coordinates'), - xywh = coordinates && coordinates.split('=')[1].split(',').map(Number), - bounds = xywh && {x: xywh[0], y: xywh[1], width: xywh[2], height: xywh[3]}; - jQuery(".result-wrapper,.result-wrapper *").css("background-color", ""); - jQuery(this).parent().css("background-color", "lightyellow"); - if (jQuery(this).is("a")) { - jQuery(this).parent().next().css("background-color", "lightyellow"); - } - //if there was more than one annotation - //(for example if a word crossed a line and needed two coordinates sets) - //the miniAnnotationList should have multiple objects - miniAnnotationList = [{ - "@id": "test", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": _this.query - }, - "on": canvasid + (coordinates ? "#" + coordinates : '') - }]; - //_this.parent.annotationsList = miniAnnotationList; - var options = { - "canvasID": canvasid, - "bounds": bounds - }; - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + _this.windowId, options); - }); - }, - - registerHandlebars: function() { - $.Handlebars.registerPartial('resultsList', [ - '{{#each this}}', - '<div class="result-wrapper">', - '<a class="search-result search-title js-show-canvas" data-canvasid="{{canvasid}}" data-coordinates="{{coordinates}}">', - '{{canvaslabel}}', - '</a>', - '{{#if annotations}}', - '<div>', - '<em>Annotations</em>: ', - '{{#each annotations}}', - '<a class="search-result search-annotation js-show-canvas" data-canvasid="{{canvasid}}" data-coordinates="{{coordinates}}">', - '<i class="fa fa-fw" aria-hidden="true"></i>', - '</a>', - '{{/each}}', - '</div>', - '{{/if}}', - '<div class="search-result result-paragraph js-show-canvas" data-canvasid="{{canvasid}}" data-coordinates="{{coordinates}}">', - '{{#if hit.before}}', - '{{hit.before}} ', - '{{/if}}', - '{{#if hit.match}}', - '<span class="highlight">{{hit.match}}</span>', - '{{else}}', - '{{{resulttext}}}', // If this text must NOT be escaped, use: '{{resulttext}}' - '{{/if}}', - '{{#if hit.after}}', - '{{ hit.after}}', - '{{/if}}', - '</div>', - '</div>', - '{{/each}}', - ].join('')); - }, - - /** - * Handlebars template. Accepts data and formats appropriately. To use, - * just pass in the template data and this will return a String with - * the formatted HTML which can then be inserted into the DOM. - * - * This template expects a IIIF AnnotationList formatted to represent - * IIIF Search results. - * - * EX: assume context: - * var templateData = { template data goes here } - * var htmlString = template(templateData); - */ - template: $.Handlebars.compile([ - '<div>', - '<div class="search-results-messages"></div>', - '<div class="search-results-count"></div>', - '<div class="search-results-pager"></div>', - '<div class="search-results-container">', - '{{> resultsList }}', - '</div>', - '</div>' - ].join(""))}; - -}(Mirador)); diff --git a/js/src/widgets/sidePanel.js b/js/src/widgets/sidePanel.js deleted file mode 100644 index 48ac5171fc07618262189542f40ce5a68f30f3b0..0000000000000000000000000000000000000000 --- a/js/src/widgets/sidePanel.js +++ /dev/null @@ -1,229 +0,0 @@ -(function($) { - - $.SidePanel= function(options) { - jQuery.extend(true, this, { - element: null, - appendTo: null, - manifest: null, - panelState: {}, - tocTabAvailable: null, - annotationsTabAvailable: false, - layersTabAvailable: false, - searchTabAvailable: null, - hasStructures: false, - state: null, - eventEmitter: null - }, options); - - this.init(); - }; - - $.SidePanel.prototype = { - init: function() { - var _this = this; - - this.updateState({ - tabs : [ - { - name : 'toc', - options : { - available: _this.tocTabAvailable, - id:'tocTab', - label: i18next.t('tabTitleIndex') - } - }, - { - name : 'annotations', - options : { - available: _this.annotationsTabAvailable, - id:'annotationsTab', - label:'Anno.' - } - }, - { - name : 'search', - options : { - available: _this.searchTabAvailable, - id: 'searchTab', - label: i18next.t('tabTitleSearch') - } - }, - { - name : 'layers', - options : { - available: _this.layersTabAvailable, - id:'layersTab', - label: i18next.t('tabTitleLayers') - } - }, - ], - width: 280, - open: true - }, true); - - this.listenForActions(); - this.render(this.updateState()); - - this.loadSidePanelComponents(); - }, - - loadSidePanelComponents: function() { - var _this = this; - - new $.Tabs({ - windowId: this.windowId, - appendTo: this.appendTo, - tabs : this.panelState.tabs, - hasStructures : this.hasStructures, - eventEmitter: this.eventEmitter - }); - - if (this.tocTabAvailable) { - new $.TableOfContents({ - structures: this.manifest.getStructures(), - appendTo: this.element.find('.tabContentArea'), - windowId: this.windowId, - canvasID: this.canvasID, - manifestVersion: this.manifest.getVersion(), - eventEmitter: this.eventEmitter - }); - } - if (_this.annotationsTabAvailable) { - new $.AnnotationsTab({ - manifest: _this.manifest, - windowId: this.windowId, - appendTo: _this.element.find('.tabContentArea'), - state: _this.state, - eventEmitter: _this.eventEmitter - }); - } - if (_this.searchTabAvailable) { - new $.SearchTab({ - manifest: _this.manifest, - windowId: this.windowId, - appendTo: _this.element.find('.tabContentArea'), - state: _this.state, - manifestVersion: this.manifest.getVersion(), - eventEmitter: _this.eventEmitter - }); - } - if (_this.layersTabAvailable) { - new $.LayersTab({ - manifest: _this.manifest, - windowId: _this.windowId, - appendTo: _this.element.find('.tabContentArea'), - canvasID: _this.canvasID, - canvases: _this.canvases, - state: _this.state, - eventEmitter: _this.eventEmitter - }); - } - - }, - - update: function(name, availability) { - var updatedState = this.panelState; - jQuery.each(updatedState.tabs, function(index, value) { - if (value.name === name) { - value.options.available = availability; - } - }); - this.updateState(updatedState); - }, - - updateState: function(newState, initial) { - var _this = this; - if (!arguments.length) return this.panelState; - jQuery.extend(true, this.panelState, newState); - - if (!initial) { - _this.eventEmitter.publish('sidePanelStateUpdated.' + this.windowId, this.panelState); - } - - /*var enableSidePanel = false; - jQuery.each(this.panelState.tabs, function(index, value) { - if (value.options.available) { - enableSidePanel = true; - } - }); - - this.toggle(enableSidePanel);*/ - - return this.panelState; - }, - - panelToggled: function() { - var currentState = this.updateState(), - open = !currentState.open; - - currentState.open = open; - this.updateState(currentState); - }, - - // doesn't do anything right now - // getTemplateData: function() { - // return { - // annotationsTab: this.state().annotationsTab, - // tocTab: this.state().tocTab - // }; - // }, - - listenForActions: function() { - var _this = this; - _this.eventEmitter.subscribe('sidePanelStateUpdated.' + this.windowId, function(_, data) { - _this.render(data); - }); - - _this.eventEmitter.subscribe('sidePanelResized', function() { - }); - - _this.eventEmitter.subscribe('sidePanelToggled.' + this.windowId, function() { - _this.panelToggled(); - }); - - _this.eventEmitter.subscribe('annotationListLoaded.' + _this.windowId, function(event) { - var windowObject = _this.state.getWindowObjectById(_this.windowId); - if (windowObject.annotationsAvailable[windowObject.viewType]) { - if (_this.state.getWindowAnnotationsList(_this.windowId).length > 0) { - _this.update('annotations', true); - } - } - }); - - _this.eventEmitter.subscribe('currentCanvasIDUpdated.' + _this.windowId, function(event, newCanvasId) { - _this.canvasID = newCanvasId; - }); - - }, - - render: function(renderingData) { - var _this = this; - if (!this.element) { - this.element = this.appendTo; - jQuery(_this.template(renderingData)).appendTo(_this.appendTo); - return; - } - }, - - template: $.Handlebars.compile([ - '<div class="tabContentArea">', - '<ul class="tabGroup">', - '</ul>', - '</div>' - ].join('')), - - toggle: function (enableSidePanel) { - var _this = this; - if (!enableSidePanel) { - jQuery(this.appendTo).hide(); - _this.eventEmitter.publish('ADD_CLASS.'+this.windowId, 'focus-max-width'); - _this.eventEmitter.publish('HIDE_ICON_TOC.'+this.windowId); - } else { - jQuery(this.appendTo).show({effect: "fade", duration: 300, easing: "easeInCubic"}); - _this.eventEmitter.publish('REMOVE_CLASS.'+this.windowId, 'focus-max-width'); - _this.eventEmitter.publish('SHOW_ICON_TOC.'+this.windowId); - } - } - }; - -}(Mirador)); diff --git a/js/src/widgets/statusBar.js b/js/src/widgets/statusBar.js deleted file mode 100755 index f908ad63cf4ff6e482f527e955460eeef6acfd82..0000000000000000000000000000000000000000 --- a/js/src/widgets/statusBar.js +++ /dev/null @@ -1,7 +0,0 @@ -(function ($) { - $.WidgetStatusBar = function WidgetStatusBar(options) { - jQuery.extend(true, this, { - - }, $.DEFAULT_SETTINGS, options); - }; -}(Mirador)); diff --git a/js/src/widgets/tabs.js b/js/src/widgets/tabs.js deleted file mode 100644 index 872efaeec01f1c5c601bf2da6a9af898e464f9cd..0000000000000000000000000000000000000000 --- a/js/src/widgets/tabs.js +++ /dev/null @@ -1,112 +0,0 @@ -(function($) { - - $.Tabs = function(options) { - jQuery.extend(true, this, { - element: null, - appendTo: null, - windowId: null, - tabState: {}, - tabs: [], - eventEmitter: null - }, options); - - this.init(); - }; - - $.Tabs.prototype = { - init: function() { - var _this = this; - - this.state({ - tabs : this.tabs, - selectedTabIndex: 0 - }, true); - this.listenForActions(); - this.render(this.state()); - this.bindEvents(); - }, - state: function(state, initial) { - var _this = this; - if (!arguments.length) return this.tabState; - jQuery.extend(true, this.tabState, state); - - if (!initial) { - _this.eventEmitter.publish('tabStateUpdated.' + this.windowId, this.tabState); - } - - return this.tabState; - }, - tabSelected: function(index) { - var state = this.state(); - state.selectedTabIndex = index; - this.state(state); - }, - getTemplateData: function() { - return { - annotationsTab: this.state().annotationsTab, - tocTab: this.state().tocTab, - searchTab: this.state().searchTab - }; - }, - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('tabStateUpdated.' + this.windowId, function(_, data) { - _this.render(data); - }); - - _this.eventEmitter.subscribe('tabSelected.' + this.windowId, function(_, data) { - _this.tabSelected(data); - }); - - _this.eventEmitter.subscribe('tabFocused.', function() { - }); - }, - bindEvents: function() { - var _this = this; - - this.element.find('.tab').on('click', function(event) { - _this.eventEmitter.publish('tabSelected.' + _this.windowId, jQuery( this ).index()); - }); - }, - render: function(renderingData) { - var _this = this; - - if (!this.element) { - var displayLabels = false; - var tabs = jQuery.grep(renderingData.tabs, function(value, index) { - return value.options.available; - }); - renderingData.tabs = tabs; - if(renderingData.tabs.length === 1){ - // TODO: temporary logic to minimize side panel if only tab is toc and toc is empty - if (renderingData.tabs[0].name === 'toc' && !_this.hasStructures) { - _this.eventEmitter.publish("sidePanelVisibilityByTab." + _this.windowId, false); - } - - // don't show button if only one tab - renderingData.tabs = []; - } - //TODO: add text if there is one label or no content within this tab - this.element = jQuery(_this.template(renderingData)).prependTo(_this.appendTo); - return; - } - - this.element.find('.tab').removeClass('selected'); - var tabClass = '.' + renderingData.tabs[renderingData.selectedTabIndex].options.id; - this.element.find(tabClass).addClass('selected'); - - }, - template: $.Handlebars.compile([ - '<ul class="tabGroup">', - '{{#each tabs}}', - '<li class="tab {{this.options.id}} {{#unless @index}}selected{{/unless}}" data-tabId="{{this.options.id}}">', - '{{this.options.label}}', - '</li>', - '{{/each}}', - '</ul>', - ].join('')), - toggle: function () {} - }; - -}(Mirador)); diff --git a/js/src/widgets/thumbnailsView.js b/js/src/widgets/thumbnailsView.js deleted file mode 100755 index 052ba9f10f711582b5d40ba53253db14c205ad7d..0000000000000000000000000000000000000000 --- a/js/src/widgets/thumbnailsView.js +++ /dev/null @@ -1,247 +0,0 @@ -(function($) { - - $.ThumbnailsView = function(options) { - - jQuery.extend(this, { - currentImgIndex: 0, - canvasID: null, - focusImages: [], - manifest: null, - element: null, - imagesList: [], - imagesListLtr: [], - vDirectionStatus: '', - appendTo: null, - thumbInfo: {thumbsHeight: 150, listingCssCls: 'listing-thumbs', thumbnailCls: 'thumbnail-view'}, - defaultThumbHeight: 150, - windowId: null, - panel: false, - lazyLoadingFactor: 1.5, //should be >= 1 - eventEmitter: null - }, options); - - this.init(); - }; - - $.ThumbnailsView.prototype = { - - init: function() { - if (this.canvasID !== null) { - this.currentImgIndex = $.getImageIndexById(this.imagesList, this.canvasID); - } - if(this.vDirectionStatus == 'rtl'){ - this.imagesList = this.imagesListLtr.concat(); - } - this.loadContent(); - if(this.vDirectionStatus == 'rtl'){ - var firstCanvasId = this.imagesList[0]['@id']; - var firstCanvasThumbSelector = 'img.thumbnail-image[data-image-id="'+firstCanvasId+'"]'; - jQuery(this.appendTo).find('.panel-thumbnail-view').addClass('v-direction-rtl'); - jQuery(this.appendTo).find('.thumbnail-view').find('li').each(function(){ - jQuery(this).addClass('thumbnail-rtl'); - }); - } - this.bindEvents(); - this.listenForActions(); - }, - - loadContent: function() { - var _this = this, - tplData = { - defaultHeight: this.thumbInfo.thumbsHeight, - listingCssCls: this.thumbInfo.listingCssCls, - thumbnailCls: this.thumbInfo.thumbnailCls - }; - - tplData.thumbs = jQuery.map(this.imagesList, function(canvas, index) { - if (canvas.width === 0) { - return {}; - } - - var aspectRatio = canvas.height/canvas.width, - width = (_this.thumbInfo.thumbsHeight/aspectRatio), - thumbnailUrl = $.getThumbnailForCanvas(canvas, width); - - return { - thumbUrl: thumbnailUrl, - title: $.JsonLd.getTextValue(canvas.label), - id: canvas['@id'], - width: width, - highlight: _this.currentImgIndex === index ? 'highlight' : '' - }; - }); - - this.element = jQuery(_this.template(tplData)).appendTo(this.appendTo); - }, - - updateImage: function(canvasId) { - this.currentImgIndex = $.getImageIndexById(this.imagesList, canvasId); - this.element.find('.highlight').removeClass('highlight'); - this.element.find("img[data-image-id='"+canvasId+"']").addClass('highlight'); - this.element.find("img[data-image-id='"+canvasId+"']").parent().addClass('highlight'); - }, - - updateFocusImages: function(focusList) { - var _this = this; - this.element.find('.highlight').removeClass('highlight'); - jQuery.each(focusList, function(index, canvasId) { - _this.element.find("img[data-image-id='"+canvasId+"']").addClass('highlight'); - _this.element.find("img[data-image-id='"+canvasId+"']").parent().addClass('highlight'); - }); - }, - - currentImageChanged: function() { - var _this = this, - target = _this.element.find('.highlight'), - scrollPosition, - windowObject = this.state.getWindowObjectById(this.windowId); - - if (target.position()) { - if (windowObject && windowObject.viewType === 'BookView') { - scrollPosition = _this.element.scrollLeft() + (target.position().left + (target.next().width() + target.outerWidth())/2) - _this.element.width()/2; - } else { - scrollPosition = _this.element.scrollLeft() + (target.position().left + target.width()/2) - _this.element.width()/2; - } - } - _this.element.scrollTo(scrollPosition, 900); - }, - - listenForActions: function() { - var _this = this; - _this.eventEmitter.subscribe(('currentCanvasIDUpdated.' + _this.windowId), function(event) { - _this.currentImageChanged(); - }); - - _this.eventEmitter.subscribe('windowResize', $.debounce(function(){ - _this.loadImages(); - }, 100)); - }, - - bindEvents: function() { - var _this = this; - _this.element.find('img').on('load', function() { - jQuery(this).hide().fadeIn(750,function(){ - // Under firefox $.show() used under display:none iframe does not change the display. - // This is workaround for https://github.com/IIIF/mirador/issues/929 - jQuery(this).css('display', 'block'); - }); - }); - - jQuery(_this.element).scroll(function() { - _this.loadImages(); - }); - - //add any other events that would trigger thumbnail display (resize, etc) - - _this.element.find('.thumbnail-image').on('click', function() { - var canvasID = jQuery(this).attr('data-image-id'); - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + _this.windowId, canvasID); - }); - }, - - toggle: function(stateValue) { - if (stateValue) { - this.show(); - } else { - this.hide(); - } - }, - - loadImages: function() { - var _this = this; - jQuery.each(_this.element.find("img"), function(key, value) { - if ($.isOnScreen(value, _this.lazyLoadingFactor) && !jQuery(value).attr("src")) { - var url = jQuery(value).attr("data"); - _this.loadImage(value, url); - } - }); - }, - - loadImage: function(imageElement, url) { - var _this = this, - imagePromise = $.createImagePromise(url); - - imagePromise.done(function(image) { - jQuery(imageElement).attr('src', image); - }); - }, - - reloadImages: function(newThumbHeight, triggerShow) { - var _this = this; - this.thumbInfo.thumbsHeight = newThumbHeight; - - jQuery.each(this.imagesList, function(index, image) { - var aspectRatio = image.height/image.width, - width = (_this.thumbInfo.thumbsHeight/aspectRatio), - newThumbURL = $.getThumbnailForCanvas(image, width), - id = image['@id']; - var imageElement = _this.element.find('img[data-image-id="'+id+'"]'); - imageElement.attr('data', newThumbURL).attr('height', _this.thumbInfo.thumbsHeight).attr('width', width).attr('src', ''); - }); - if (triggerShow) { - this.show(); - } - }, - - template: $.Handlebars.compile([ - '<div class="{{thumbnailCls}}">', - '<ul class="{{listingCssCls}}" role="list" aria-label="Thumbnails">', - '{{#thumbs}}', - '<li class="{{highlight}}" role="listitem" aria-label="Thumbnail">', - '<img class="thumbnail-image {{highlight}}" title="{{title}}" data-image-id="{{id}}" src="" data="{{thumbUrl}}" height="{{../defaultHeight}}" width="{{width}}">', - '<div class="thumb-label">{{title}}</div>', - '</li>', - '{{/thumbs}}', - '</ul>', - '</div>' - ].join('')), - - hide: function() { - var element = jQuery(this.element); - if (this.panel) { - element = element.parent(); - } - element.hide({effect: "fade", duration: 300, easing: "easeOutCubic"}); - }, - - show: function() { - var element = jQuery(this.element); - if (this.panel) { - element = element.parent(); - } - var _this = this; - element.show({ - effect: "fade", - duration: 300, - easing: "easeInCubic", - complete: function() { - // Under firefox $.show() used under display:none iframe does not change the display. - // This is workaround for https://github.com/IIIF/mirador/issues/929 - jQuery(this).css('display', 'block'); - _this.loadImages(); - } - }); - }, - - adjustWidth: function(className, hasClass) { - var _this = this; - if (hasClass) { - _this.eventEmitter.publish('REMOVE_CLASS.'+this.windowId, className); - } else { - _this.eventEmitter.publish('ADD_CLASS.'+this.windowId, className); - } - }, - - adjustHeight: function(className, hasClass) { - if (hasClass) { - this.element.removeClass(className); - } else { - this.element.addClass(className); - } - } - - }; - - - -}(Mirador)); diff --git a/js/src/widgets/toc.js b/js/src/widgets/toc.js deleted file mode 100755 index 020b8bf190e2fb0c487fbc92ad2a6c4300312283..0000000000000000000000000000000000000000 --- a/js/src/widgets/toc.js +++ /dev/null @@ -1,439 +0,0 @@ -(function($) { - - $.TableOfContents = function(options) { - - jQuery.extend(true, this, { - element: null, - appendTo: null, - windowId: null, - structures: [], - manifestVersion: null, - previousSelectedElements: [], - selectedElements: [], - previousOpenElements: [], - openElements: [], - hoveredElement: [], - selectContext: null, - tocData: {}, - active: null, - eventEmitter: null - }, options); - - this.init(); - - var self = this; - window.render = function() {self.render();}; - }; - - $.TableOfContents.prototype = { - init: function () { - var _this = this; - if (!_this.structures || _this.structures.length === 0) { - this.element = jQuery(this.emptyTemplate()).appendTo(this.appendTo); - } else { - this.element = jQuery(this.template({ ranges: this.getTplData() })).appendTo(this.appendTo); - this.tocData = _this.initTocData(); - this.setSelectedElements($.getRangeIDByCanvasID(_this.structures, _this.canvasID)); - this.element.find('.has-child ul').hide(); - this.render(); - } - this.bindEvents(); - }, - - tabStateUpdated: function(data) { - if (data.tabs[data.selectedTabIndex].options.id === 'tocTab') { - this.element.show(); - } else { - this.element.hide(); - } - }, - - getTplData: function() { - var _this = this, - filteredStructures = _this.structures.map(function(structure) { - structure.id = structure['@id']; - return structure; - }), - ranges; - - switch (_this.manifestVersion) { - case '1': - ranges = _this.extractV1RangeTrees(_this.structures); - break; - case '2': - ranges = _this.extractV2RangeTrees(_this.structures); - break; - // case '2.1': - // _this.extractV21RangeTrees(_this.structures); - } - if (ranges.length < 2) { - if (ranges[0].children) { - ranges = ranges[0].children; - } - } - - return ranges; - }, - - initTocData: function() { - var _this = this, - tocData = {}; - - _this.structures.forEach(function(structure) { - var rangeID = structure['@id'], - attrString = '[data-rangeid="' + rangeID +'"]'; - - tocData[structure['@id']] = { - element: _this.element.find(attrString).closest('li') - }; - }); - - return tocData; - }, - - extractV1RangeTrees: function(rangeList) { - var tree, parent; - // Recursively build tree/table of contents data structure - // Begins with the list of topmost categories - function unflatten(flatRanges, parent, tree) { - // To aid recursion, define the tree if it does not exist, - // but use the tree that is being recursively built - // by the call below. - tree = typeof tree !== 'undefined' ? tree : []; - parent = typeof parent !== 'undefined' ? parent : {'@id': "root", label: "Table of Contents" }; - var children = jQuery.grep(flatRanges, function(child) { if (!child.within) { child.within = 'root'; } return child.within == parent['@id']; }); - if ( children.length ) { - if ( parent['@id'] === 'root') { - // If there are children and their parent's - // id is a root, bind them to the tree object. - // - // This begins the construction of the object, - // and all non-top-level children are now - // bound the these base nodes set on the tree - // object. - children.forEach(function(child) { - child.level = 0; - }); - tree = children; - } else { - // If the parent does not have a top-level id, - // bind the children to the parent node in this - // recursion level before handing it over for - // another spin. - // - // Because "child" is passed as - // the second parameter in the next call, - // in the next iteration "parent" will be the - // first child bound here. - children.forEach(function(child) { - child.level = parent.level+1; - }); - parent.children = children; - } - // The function cannot continue to the return - // statement until this line stops being called, - // which only happens when "children" is empty. - jQuery.each( children, function( index, child ){ unflatten( flatRanges, child ); } ); - } - return tree; - } - - return unflatten(rangeList); - }, - - extractV2RangeTrees: function(rangeList) { - var tree, parent; - // Recursively build tree/table of contents data structure - // Begins with the list of topmost categories - function unflatten(flatRanges, parent, tree) { - // To aid recursion, define the tree if it does not exist, - // but use the tree that is being recursively built - // by the call below. - tree = typeof tree !== 'undefined' ? tree : []; - parent = typeof parent !== 'undefined' ? parent : {'@id': "root", label: "Table of Contents" }; - var children = []; - if (parent.ranges) { - jQuery.each(parent.ranges, function(index, id) { - //make sure id is a string for grepping - id = typeof id === 'object' ? id['@id'] : id; - var child = jQuery.grep(flatRanges, function(range, index) { - if (range['@id'] === id) { - return range; - } - })[0]; - if (child) { - children.push(child); - } - }); - } else if (parent['@id'] === 'root') { - // we have created a dummy root node, get the top most range as only child - var top = jQuery.grep(flatRanges, function(range, index) { - //check if we have a viewingHint - if (range.hasOwnProperty('viewingHint') && range.viewingHint === 'top') { - //found the top most range - return range; - } - })[0]; - if (top) { - children.push(top); - } - // if we still don't have children, loop through and look for a range with children - // if we still can't find one, then create a dummy range in which all ranges are its children - if (children.length === 0) { - jQuery.each(flatRanges, function(index, range) { - if (range.ranges) { - children.push(range); - return false; - } - }); - if (children.length === 0) { - children.push({"ranges" : flatRanges}); - } - } - } - if ( children.length ) { - if ( parent['@id'] === 'root') { - // If there are children and their parent's - // id is a root, bind them to the tree object. - // - // This begins the construction of the object, - // and all non-top-level children are now - // bound the these base nodes set on the tree - // object. - children.forEach(function(child) { - child.level = 0; - }); - tree = children; - } else { - // If the parent does not have a top-level id, - // bind the children to the parent node in this - // recursion level before handing it over for - // another spin. - // - // Because "child" is passed as - // the second parameter in the next call, - // in the next iteration "parent" will be the - // first child bound here. - children.forEach(function(child) { - child.level = parent.level+1; - }); - parent.children = children; - } - // The function cannot continue to the return - // statement until this line stops being called, - // which only happens when "children" is empty. - jQuery.each( children, function( index, child ){ unflatten( flatRanges, child ); } ); - } - return tree; - } - - return unflatten(rangeList); - }, - - render: function() { - - var _this = this; - var toDeselect = _this.previousSelectedElements.map(function(rangeID) { - return _this.tocData[rangeID].element; - }), - toSelect = _this.selectedElements.map(function(rangeID) { - return _this.tocData[rangeID].element; - }), - toOpen = _this.openElements.filter(function(rangeID) { - return jQuery.inArray(rangeID, _this.previousOpenElements) === -1; - }).map(function(rangeID) { - return _this.tocData[rangeID].element; - }), - toClose = _this.previousOpenElements.filter(function(rangeID) { - return jQuery.inArray(rangeID, _this.openElements) === -1; - }).map(function(rangeID) { - return _this.tocData[rangeID].element; - }); - - if (_this.previousSelectedElements !== _this.selectedElements) { - // Deselect elements - toDeselect.forEach(function(element) { - element.removeClass('selected'); - }); - - // Select new elements - toSelect.forEach(function(element) { - element.addClass('selected'); - }); - - toClose.forEach(function(element) { - element.removeClass('open'); - element.find('ul:first').slideFadeToggle(); - }); - - toOpen.forEach(function(element) { - // TODO if you open a range below an open range, it scrolls back up to the first open range - // comment out scrolling for now - //element.addClass('open').find('ul:first').slideFadeToggle(250, 'swing', scroll); - element.addClass('open').find('ul:first').slideFadeToggle(); - }); - } else { - toOpen.forEach(function(element) { - element.addClass('open').find('ul:first').slideFadeToggle(); - }); - - toClose.forEach(function(element) { - element.removeClass('open').find('ul:first').slideFadeToggle(); - }); - } - - // Open newly opened sections - function scroll() { - var head = _this.element.find('.selected').first(); - if (head.length > 0) { - _this.element.scrollTo(head, 400); - } - } - }, - - bindEvents: function() { - var _this = this; - - // _this.eventEmitter.subscribe('focusChanged', function(_, focusFrame) { - // }); - - // _this.eventEmitter.subscribe('cursorFrameUpdated', function(_, cursorBounds) { - // }); - - _this.eventEmitter.subscribe('tabStateUpdated.' + _this.windowId, function(_, data) { - _this.tabStateUpdated(data); - }); - - _this.eventEmitter.subscribe(('currentCanvasIDUpdated.' + _this.windowId), function(event, canvasID) { - if (!_this.structures) { return; } - _this.setSelectedElements($.getRangeIDByCanvasID(_this.structures, canvasID)); - _this.render(); - }); - - _this.element.find('.toc-link').on('click', function(event) { - event.stopPropagation(); - - var rangeID = jQuery(this).data().rangeid, - canvasID = jQuery.grep(_this.structures, function(item) { return item['@id'] == rangeID; })[0].canvases[0]; - - _this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + _this.windowId, canvasID); - }); - - _this.element.find('.toc-caret').on('click', function(event) { - event.stopPropagation(); - - var rangeID = jQuery(this).parent().data().rangeid; - _this.setOpenItem(rangeID); - _this.render(); - }); - }, - - setActive: function(active) { - var _this = this; - _this.active = active; - }, - - setOpenItem: function(rangeID) { - var _this = this, - alreadyOpen = jQuery.inArray(rangeID, _this.openElements) !== -1; - - _this.previousOpenElements = _this.openElements; - _this.openElements = (function() { - if (alreadyOpen) { - return _this.openElements.filter(function(elementID) { - return elementID !== rangeID; - }); - } - return _this.openElements.map(function(elementID) {return elementID;}).concat([rangeID]); - })(); - - }, - - // focusCursorFrame: function() { - // }, - - // hoverItem: function() { - // }, - - setSelectedElements: function(rangeIDs) { - var _this = this; - - _this.previousSelectedElements = _this.selectedElements; - _this.selectedElements = rangeIDs; - _this.previousOpenElements = _this.openElements; - // Ensure that all new selected elements are added to - // the list of open elements, - // and all previously selected elements are removed. - _this.openElements = _this.openElements.filter(function(openElementID) { - return jQuery.inArray(openElementID, _this.previousSelectedElements) === -1; - }).concat(rangeIDs).filter(function(openElementID,index,openElements){ - // this filters out any duplicates, which would cause a bug. - return index === openElements.indexOf(openElementID); - }); - }, - - emptyTemplate: $.Handlebars.compile([ - '<ul class="toc">', - '<li class="leaf-item open">', - '<h2><span>{{t "noIndex"}}</span></h2>', - '</ul>', - ].join('')), - - template: function(tplData) { - - var template = $.Handlebars.compile([ - '<ul class="toc">', - '{{#nestedRangeLevel ranges}}', - '<li class="{{#if children}}has-child{{else}}leaf-item{{/if}}">', - '{{{tocLevel id label level children}}}', - '{{#if children}}', - '<ul>', - '{{{nestedRangeLevel children}}}', - '</ul>', - '{{/if}}', - '<li>', - '{{/nestedRangeLevel}}', - '</ul>' - ].join('')); - - var previousTemplate; - - $.Handlebars.registerHelper('nestedRangeLevel', function(children, options) { - var out = ''; - - if (options.fn !== undefined) { - previousTemplate = options.fn; - } - - children.forEach(function(child) { - child.label = $.JsonLd.getTextValue(child.label); - out = out + previousTemplate(child); - }); - - return out; - }); - - $.Handlebars.registerHelper('tocLevel', function(id, label, level, children) { - var caret = '<i class="fa fa-caret-right toc-caret"></i>', - cert = '<i class="fa fa-certificate star"></i>'; - return '<h' + (level+1) + '><a class="toc-link" data-rangeID="' + id + '">' + caret + cert + '<span>' + label + '</span></a></h' + (level+1) + '>'; - }); - - return template(tplData); - }, - - hide: function() { - var _this = this; - jQuery(this.appendTo).hide(); - _this.eventEmitter.publish('ADD_CLASS.'+this.windowId, 'focus-max-width'); - }, - - show: function() { - var _this = this; - jQuery(this.appendTo).show({effect: "fade", duration: 300, easing: "easeInCubic"}); - _this.eventEmitter.publish('REMOVE_CLASS.'+this.windowId, 'focus-max-width'); - } - - }; - -}(Mirador)); diff --git a/js/src/workspace.js b/js/src/workspace.js deleted file mode 100644 index 6d74c70d605fdf4e827827b08d5de3b1597c50bd..0000000000000000000000000000000000000000 --- a/js/src/workspace.js +++ /dev/null @@ -1,534 +0,0 @@ -(function($) { - - $.Workspace = function(options) { - - jQuery.extend(true, this, { - workspaceSlotCls: 'slot', - focusedSlot: null, - slots: [], - windows: [], - appendTo: null, - layoutDescription: null, - state: null, - eventEmitter: null - }, options); - - var uid = $.genUUID(); - this.element = this.element || jQuery('<div class="workspace-container" id="workspace-'+uid+'">'); - this.init(); - - }; - - $.Workspace.prototype = { - init: function () { - this.element.appendTo(this.appendTo); - // this if statement does not appear to be doing anything because toggleSwitchWorkspace is not a function anywhere - // if (this.type === "none") { - // this.parent.toggleSwitchWorkspace(); - // return; - // } - - this.calculateLayout(); - - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function() { - var _this = this; - - _this.eventEmitter.subscribe('resizeMirador', function(event) { - _this.calculateLayout(); - }); - - _this.eventEmitter.subscribe('manifestQueued', function(event, manifestPromise) { - // Trawl windowObjects preemptively for slotAddresses and - // notify those slots to display a "loading" state. - // Similar to the operation of the manifestLoadStatusIndicator - // and its associated manifestList controller. - var targetSlot; - - if (_this.state.getStateProperty('windowObjects')) { - var check = _this.state.getStateProperty('windowObjects').forEach(function(windowConfig, index) { - // windowConfig.slotAddress will give the slot; - // change the state on that slot to be "loading" - if (windowConfig.slotAddress) { - targetSlot = _this.getSlotFromAddress(windowConfig.slotAddress); - } else { - targetSlot = _this.focusedSlot || _this.slots.filter(function(slot) { - return slot.hasOwnProperty('window') ? true : false; - })[0]; - } - }); - } - }); - - _this.eventEmitter.subscribe('REMOVE_WINDOW', function(event, windowId){ - _this.removeWindow(windowId); - }); - - _this.eventEmitter.subscribe('REMOVE_NODE', function(event, node){ - _this.removeNode(node); - }); - - _this.eventEmitter.subscribe('ADD_SLOT_ITEM', function(event, slot){ - _this.addItem(slot); - }); - - _this.eventEmitter.subscribe('ADD_WINDOW', function(event, windowConfig) { - _this.addWindow(windowConfig); - }); - - _this.eventEmitter.subscribe('SPLIT_RIGHT', function(event, slot) { - _this.splitRight(slot); - }); - - _this.eventEmitter.subscribe('SPLIT_LEFT', function(event, slot) { - _this.splitLeft(slot); - }); - - _this.eventEmitter.subscribe('SPLIT_DOWN', function(event, slot) { - _this.splitDown(slot); - }); - - _this.eventEmitter.subscribe('SPLIT_UP', function(event, slot) { - _this.splitUp(slot); - }); - - _this.eventEmitter.subscribe('RESET_WORKSPACE_LAYOUT', function(event, options) { - _this.resetLayout(options.layoutDescription); - }); - }, - - bindEvents: function() { - var _this = this; - - d3.select(window).on('resize', function(event) { - _this.calculateLayout(); - }); - }, - - get: function(prop, parent) { - if (parent) { - return this[parent][prop]; - } - return this[prop]; - }, - - set: function(prop, value, options) { - var _this = this; - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - _this.eventEmitter.publish(prop + '.set', value); - }, - - calculateLayout: function(resetting) { - var _this = this, - layout; - - _this.layout = layout = new Isfahan({ - containerId: _this.element.attr('id'), - layoutDescription: _this.layoutDescription, - configuration: null, - padding: 3 - }); - - var data = layout.filter( function(d) { - return !d.children; - }); - - // Data Join. - var divs = d3.select("#" + _this.element.attr('id')).selectAll(".layout-slot") - .data(data, function(d) { return d.id; }); - - // Implicitly updates the existing elements. - // Must come before the enter function. - divs.call(cell).each(function(d) { - _this.slots.forEach(function(slot) { - if (slot.slotID === d.id) { - slot.layoutAddress = d.address; - } - }); - }); - - // Enter - divs.enter().append("div") - .attr("class", "layout-slot") - .attr("data-layout-slot-id", function(d) { return d.id; }) - .call(cell) - .each(function(d) { - var appendTo = _this.element.children('div').filter('[data-layout-slot-id="'+ d.id+'"]')[0]; - _this.slots.push(new $.Slot({ - slotID: d.id, - layoutAddress: d.address, - focused: true, - appendTo: appendTo, - state: _this.state, - eventEmitter: _this.eventEmitter - })); - }); - - // Exit - divs.exit() - .remove("div") - .each(function(d) { - var slotMap = _this.slots.reduce(function(map, temp_slot) { - if (d.id === temp_slot.slotID) { - map[d.id] = temp_slot; - } - return map; - }, {}), - slot = slotMap[d.id]; - - if (slot && slot.window && !resetting) { - _this.eventEmitter.publish('REMOVE_WINDOW', slot.window.id); - } - - // nullify the window parameter of old slots - slot.window = null; - _this.slots.splice(_this.slots.indexOf(slot), 1); - }); - - function cell() { - this - .style("left", function(d) { return d.x + "px"; }) - .style("top", function(d) { return d.y + "px"; }) - .style("width", function(d) { return Math.max(0, d.dx ) + "px"; }) - .style("height", function(d) { return Math.max(0, d.dy ) + "px"; }); - } - - var root = jQuery.grep(_this.layout, function(node) { return !node.parent;})[0]; - - _this.eventEmitter.publish("layoutChanged", root); - _this.eventEmitter.publish('slotsUpdated', {slots: _this.slots}); - - if (_this.slots.length <= 1) { - _this.eventEmitter.publish('HIDE_REMOVE_SLOT'); - } else { - _this.eventEmitter.publish('SHOW_REMOVE_SLOT'); - } - }, - - split: function(targetSlot, direction) { - var _this = this, - node = jQuery.grep(_this.layout, function(node) { return node.id === targetSlot.slotID; })[0]; - nodeIndex = node.parent ? node.parent.children.indexOf(node) : 0, - nodeIsNotRoot = node.parent; - - function addSibling(node, indexDifference) { - if (nodeIsNotRoot) { - var siblingIndex = nodeIndex + indexDifference, - newSibling = _this.newNode(node.type, node); - - node.parent.children.splice(siblingIndex, 0, newSibling); - _this.layout.push(newSibling); - return newSibling; - } - - // handles the case where the root needs to be mutated. - node.type = node.type === 'row' ? 'column' : 'row'; - mutateAndAdd(node, indexDifference); - } - - function mutateAndAdd(node, indexDifference) { - // Locally mutate the tree to accommodate a - // sibling of another kind, transforming - // both the target node and its parent. - var newParent = _this.newNode(node.type, node.parent); - - // Flip its type while keeping - // the same id. - node.type = node.type === 'row' ? 'column' : 'row'; - - // Create a new node (which will be childless) - // that is also a sibling of this node. - newSibling = _this.newNode(node.type, newParent); - - // maintain array ordering. - newParent.children = []; - newParent.children.push(node); // order matters, place node first. - newParent.children.splice(indexDifference, 0, newSibling); // order matters, so put new sibling on one side or the other. - if (nodeIsNotRoot) { - newParent.parent = node.parent; - // replace the old node in its parent's child - // array with the new parent. - newParent.parent.children[nodeIndex] = newParent; - } - - node.parent = newParent; - _this.layout.push(newParent, newSibling); - } - - if (node.type === 'column') { - // Since it is a column: - // - // If adding to a side, simply - // add a sibling. - // Left means before, right means after. - if (direction === 'r' || direction === 'l') { - indexDifference = direction === 'r' ? 1 : 0; - addSibling(node, indexDifference); - } - // If adding above or below, the - // operation must be changed to mutating - // the structure. - // Up means before, Down means after. - else { - indexDifference = direction === 'd' ? 1 : 0; - mutateAndAdd(node, indexDifference); - } - } else { - // Since it is a row: - // - // If adding to a side, mutate the - // structure. - // Left means before, right means after. - if (direction === 'r' || direction === 'l') { - indexDifference = direction === 'r' ? 1 : 0; - mutateAndAdd(node, indexDifference); - } - // If adding above or below, the - // operations must be switched to adding - // a sibling. - // Up means before, Down means after. - else { - indexDifference = direction === 'd' ? 1 : 0; - addSibling(node, indexDifference); - } - } - - // Recalculate the layout. - // The original hierarchical structure is - // accessible from the root node. Passing - // it back through the layout code will - // recalculate everything else needed for - // the redraw. - var root = jQuery.grep(_this.layout, function(node) { return !node.parent;})[0]; - _this.layoutDescription = root; - _this.calculateLayout(); - - }, - - splitRight: function(targetSlot) { - var _this = this; - _this.split(targetSlot, 'r'); - }, - - splitLeft: function(targetSlot) { - var _this = this; - _this.split(targetSlot, 'l'); - }, - - splitUp: function(targetSlot) { - var _this = this; - _this.split(targetSlot, 'u'); - }, - - splitDown: function(targetSlot) { - var _this = this; - _this.split(targetSlot, 'd'); - }, - - removeNode: function(targetSlot) { - // de-mutate the tree structure. - var _this = this, - node = jQuery.grep(_this.layout, function(node) { return node.id === targetSlot.slotID; })[0], - nodeIndex = node.parent.children.indexOf(node), - parentIndex, - remainingNode, - root = jQuery.grep(_this.layout, function(node) { return !node.parent;})[0]; - - if (node.parent.children.length === 2) { - // de-mutate the tree without destroying - // the children of the remaining node, - // which in this case means changing their - // IDs. - node.parent.children.splice(nodeIndex,1); - remainingNode = node.parent.children[0]; - - remainingNode.parent.id = remainingNode.id; - delete node.parent; - } else if (node.parent.children.length === 1) { - } else { - // If the node is one of more than 2 siblings, - // simply splice it out of the parent's children - // array. - node.parent.children.splice(nodeIndex, 1); - } - - //delete targetSlot; - _this.layoutDescription = root; - _this.calculateLayout(); - _this.eventEmitter.publish('slotRemoved',targetSlot); - }, - - newNode: function(type, parent) { - if (typeof parent === 'undefined') { - return { - type: type, - id: $.genUUID() - }; - } else { - return { - type: type, - id: $.genUUID(), - parent: parent - }; - } - }, - - getSlotFromAddress: function(address) { - var _this = this; - return _this.slots.filter(function(slot) { - return slot.layoutAddress === address; - })[0]; - }, - - resetLayout: function(layoutDescription) { - this.layoutDescription = layoutDescription; - this.calculateLayout(true); - this.placeWindows(); - }, - - placeWindows: function() { - // take the windows array and place - // as many windows into places as can - // fit. - var _this = this, - deletedWindows; - - if (_this.windows.length > _this.slots.length) { - // This issues the REMOVE_WINDOW action for - // the earliest windows for which a slot will - // not be available after the layout changes. - // - // We use slice, not splice, here because it is - // non-destructive. The actual state mutation will - // be handled in the action callback, since only - // actions should be allowed to mutate global state. - _this.windows.slice(0, _this.windows.length -_this.slots.length) - .forEach(function(removedWindow){ - _this.eventEmitter.publish('REMOVE_WINDOW', removedWindow.id); - }); - } - - _this.windows.forEach(function(window) { - var slot = _this.getAvailableSlot(); - slot.window = window; - - window.update({ - id: window.id, - slotAddress: slot.layoutAddress, - state: _this.state, - appendTo: slot.element, - canvasID: window.canvasID, - viewType: window.viewType - }); - }); - }, - - getAvailableSlot: function() { - return this.slots.filter(function(slot) { - return !slot.window; - })[0]; - }, - - clearSlot: function(slotId) { - if (this.slots[slotId].windowElement) { - this.slots[slotId].windowElement.remove(); - } - this.slots[slotId].window = null; - }, - - addItem: function(slot) { - var _this = this; - this.focusedSlot = slot; - _this.eventEmitter.publish('TOGGLE_LOAD_WINDOW'); - }, - - addWindow: function(windowConfig) { - // Windows can be added from a config, - // from a saved state, (in both those cases they are in the form of "windowObjects") - // from the workspace windows list after a grid layout change, - // from the manifests panel in image mode, - // or from the manifests panel in thumbnail mode. - var _this = this, - newWindow, - targetSlot; - - // toggles the other top-level panels closed and focuses the - // workspace. For instance, after selecting an object from the - // manifestPanel. - _this.eventEmitter.publish('TOGGLE_OVERLAYS_FALSE'); - - if (windowConfig.slotAddress) { - targetSlot = _this.getSlotFromAddress(windowConfig.slotAddress); - } else { - targetSlot = _this.focusedSlot || _this.getAvailableSlot(); - } - - windowConfig.appendTo = targetSlot.element; - windowConfig.state = _this.state; - windowConfig.eventEmitter = _this.eventEmitter; - - if (targetSlot.window) { - _this.eventEmitter.publish('REMOVE_WINDOW', targetSlot.window.id); - } - - windowConfig.slotAddress = targetSlot.layoutAddress; - windowConfig.id = windowConfig.id || $.genUUID(); - - _this.eventEmitter.publish("windowSlotAdded", {id: windowConfig.id, slotAddress: windowConfig.slotAddress}); - - //extend the windowConfig with the default settings - var mergedConfig = jQuery.extend(true, {}, _this.state.getStateProperty('windowSettings'), windowConfig); - - //"rename" some keys in the merged object to align settings parameters with window parameters - if (mergedConfig.hasOwnProperty('loadedManifest')) { - mergedConfig.manifest = _this.state.getStateProperty('manifests')[mergedConfig.loadedManifest]; - delete mergedConfig.loadedManifest; - } - - if (mergedConfig.hasOwnProperty('bottomPanel')) { - mergedConfig.bottomPanelAvailable = mergedConfig.bottomPanel; - delete mergedConfig.bottomPanel; - } - - if (mergedConfig.hasOwnProperty('sidePanel')) { - mergedConfig.sidePanelAvailable = mergedConfig.sidePanel; - delete mergedConfig.sidePanel; - } - - if (windowConfig.state.currentConfig.hasOwnProperty('sidePanelOptions')) { - jQuery.extend( - mergedConfig.sidePanelOptions, - windowConfig.state.currentConfig.sidePanelOptions - ); - } - - if (mergedConfig.hasOwnProperty('overlay')) { - mergedConfig.overlayAvailable = mergedConfig.overlay; - delete mergedConfig.overlay; - } - newWindow = new $.Window(mergedConfig); - _this.windows.push(newWindow); - - targetSlot.window = newWindow; - - _this.eventEmitter.publish("windowAdded", {id: windowConfig.id, slotAddress: windowConfig.slotAddress}); - - }, - - removeWindow: function(windowId) { - var _this = this; - - _this.windows = _this.windows.filter(function(window) { - return window.id !== windowId; - }); - _this.eventEmitter.publish('windowRemoved', windowId); - } -}; -}(Mirador)); diff --git a/js/src/workspaces/slot.js b/js/src/workspaces/slot.js deleted file mode 100644 index 21dd5670b8d8ba7625390bdd0afbeab2e1848ad4..0000000000000000000000000000000000000000 --- a/js/src/workspaces/slot.js +++ /dev/null @@ -1,307 +0,0 @@ -(function($) { - - $.Slot = function(options) { - - jQuery.extend(true, this, { - workspaceSlotCls: 'slot', - slotID: null, - layoutAddress: null, - focused: null, - appendTo: null, - window: null, - windowElement: null, - state: null, - eventEmitter: null - }, options); - - this.init(); - - }; - - $.Slot.prototype = { - init: function () { - this.events = []; - this.element = jQuery(this.template({ - workspaceSlotCls: this.workspaceSlotCls, - slotID: this.slotId - })); - this.element.appendTo(this.appendTo); - - this.bindEvents(); - this.listenForActions(); - }, - - listenForActions: function () { - var _this = this; - - this.events = [ - _this.eventEmitter.subscribe('slotRemoved', function (event, slot) { - if (_this.slotID === slot.slotID) { - _this.clearSlot(); - } - }), - - _this.eventEmitter.subscribe('layoutChanged', function (event, layoutRoot) { - // Must reset the slotAddress of the window. - if (_this.window) { - _this.window.slotAddress = _this.layoutAddress; - _this.eventEmitter.publish('windowSlotAddressUpdated', { - id: _this.window.id, - slotAddress: _this.window.slotAddress - }); - } - }), - - _this.eventEmitter.subscribe('HIDE_REMOVE_SLOT', function (event) { - _this.element.find('.remove-slot-option').hide(); - if (_this.window) { - _this.eventEmitter.publish('HIDE_REMOVE_OBJECT.' + _this.window.id); - } - }), - - _this.eventEmitter.subscribe('SHOW_REMOVE_SLOT', function (event) { - _this.element.find('.remove-slot-option').show(); - if (_this.window) { - _this.eventEmitter.publish('SHOW_REMOVE_OBJECT.' + _this.window.id); - } - }), - - _this.eventEmitter.subscribe('ADD_ITEM_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.addItem(); - } - }), - - _this.eventEmitter.subscribe('REMOVE_SLOT_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.eventEmitter.publish('REMOVE_NODE', _this); - } - }), - - _this.eventEmitter.subscribe('SPLIT_RIGHT_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.eventEmitter.publish('SPLIT_RIGHT', _this); - } - }), - - _this.eventEmitter.subscribe('SPLIT_LEFT_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.eventEmitter.publish('SPLIT_LEFT', _this); - } - }), - - _this.eventEmitter.subscribe('SPLIT_DOWN_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.eventEmitter.publish('SPLIT_DOWN', _this); - } - }), - - _this.eventEmitter.subscribe('SPLIT_UP_FROM_WINDOW', function (event, id) { - if (_this.window && _this.window.id === id) { - _this.eventEmitter.publish('SPLIT_UP', _this); - } - })]; - }, - - bindEvents: function() { - var _this = this, - dropTarget = this.element.find('.dropMask'); - - this.element.find('.addItemLink').on('click', function(){ _this.addItem(); }); - this.element.find('.remove-slot-option').on('click', function(){ - _this.eventEmitter.publish('REMOVE_NODE', _this); - }); - this.element.on('dragover', function(e) { - e.preventDefault(); - dropTarget.show(); - }); - dropTarget.on('dragenter', function(e) { - e.preventDefault(); - _this.element.addClass('draggedOver'); - }); - dropTarget.on('dragleave', function(e) { - e.preventDefault(); - _this.element.removeClass('draggedOver'); - dropTarget.hide(); - }); - this.element.on('drop', function(e) { - _this.dropItem(e); - }); - }, - - dropItem: function(e) { - var _this = this; - - e.preventDefault(); - var text_url = e.originalEvent.dataTransfer.getData("text/plain"); - if (text_url) { - _this.handleDrop(text_url); - } else { - e.originalEvent.dataTransfer.items[0].getAsString(function(url) { - _this.handleDrop(url); - }); - } - }, - - handleDrop: function(url) { - var _this = this; - - url = url || text_url; - var manifestUrl = $.getQueryParams(url).manifest || url, - collectionUrl = $.getQueryParams(url).collection, - canvasId = $.getQueryParams(url).canvas, - imageInfoUrl = $.getQueryParams(url).image, - windowConfig; - - if (typeof _this.state.getStateProperty('manifests')[manifestUrl] !== 'undefined') { - windowConfig = { - manifest: _this.state.getStateProperty('manifests')[manifestUrl], - slotAddress: _this.getAddress() - }; - - if (canvasId) { - // If the canvasID is defined, we need to both add - // it to the windowConfig and tell it to open in - // image view. If we don't specify the focus, the - // window will open in thumbnail view with the - // chosen page highlighted. - windowConfig.canvasID = canvasId; - windowConfig.viewType = 'ImageView'; - } - - _this.eventEmitter.publish('ADD_WINDOW', windowConfig); - - } - - else if (typeof imageInfoUrl !== 'undefined') { - if (!_this.state.getStateProperty('manifests')[imageInfoUrl]) { - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [imageInfoUrl, "(Added from URL)"]); - } - } - else if (typeof collectionUrl !== 'undefined'){ - jQuery.getJSON(collectionUrl).done(function (data, status, jqXHR) { - if (data.hasOwnProperty('manifests')){ - jQuery.each(data.manifests, function (ci, mfst) { - if (!_this.state.getStateProperty('manifests')[imageInfoUrl]) { - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [mfst['@id'], "(Added from URL)"]); - } - }); - } else if (data.hasOwnProperty('members')){ - jQuery.each(data.members, function (ci, mfst) { - if (!_this.state.getStateProperty('manifests')[imageInfoUrl]) { - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [mfst['@id'], "(Added from URL)"]); - } - }); - } - }); - - //TODO: - //this works; - //but you might want to check if some "publish" action would be better - _this.addItem(); - - } - else { - if (!_this.state.getStateProperty('manifests')[imageInfoUrl]) { - _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [manifestUrl, "(Added from URL)"]); - } - } - - _this.eventEmitter.subscribe('manifestReceived', function(event, manifest) { - var windowConfig; - if (manifest.jsonLd['@id'] === manifestUrl || manifest.jsonLd['@id']+'/info.json' === imageInfoUrl) { - // There are many manifests that may be received - // while we are waiting for this one, so we - // need to make sure the event actually refers to the - // manifest we've just dropped. - - windowConfig = { - manifest: manifest, - slotAddress: _this.getAddress() - }; - - if (manifest.jsonLd['@id']+'/info.json' === imageInfoUrl) { - // If this was added from a naked info.json, pick the - // first (and only) page from the synthetic manifest. - canvasId = manifest.jsonLd.sequences[0].canvases[0]['@id']; - } - - if (canvasId) { - // If the canvasID is defined, we need to both add - // it to the windowConfig and tell it to open in - // image view. If we don't specify the focus, the - // window will open in thumbnail view with the - // chosen page highlighted. - windowConfig.canvasID = canvasId; - windowConfig.viewType = 'ImageView'; - } - - _this.eventEmitter.publish('ADD_WINDOW', windowConfig); - } - }); - }, - - destroyEvents:function(){ - var _this = this; - this.events.forEach(function(event){ - _this.eventEmitter.unsubscribe(event.name,event.handler); - }); - }, - - clearSlot: function () { - this.destroyEvents(); - - // @TODO This is not a task that slots should fulfil - // This prevents the save controller - // from attempting to re-save the window - // after having already removed it. - if (this.window) { - delete this.window; - } - }, - - getAddress: function() { - return this.layoutAddress; - }, - - addItem: function() { - var _this = this; - _this.focused = true; - - _this.eventEmitter.publish('ADD_SLOT_ITEM', _this); - }, - - // template should be based on workspace type - template: $.Handlebars.compile([ - '<div id="{{slotID}}" class="{{workspaceSlotCls}}">', - '<a class="remove-slot-option"><i class="fa fa-times fa-lg fa-fw"></i> {{t "close"}}</a>', - '<div class="slotIconContainer">', - // '<a href="javascript:;" class="mirador-btn mirador-icon-window-menu" title="Replace object"><i class="fa fa-table fa-lg fa-fw"></i>', - // '<ul class="dropdown slot-controls">', - // '<li class="new-object-option"><i class="fa fa-plus-square fa-lg fa-fw"></i> {{t "newObject"}}</li>', - // '<li class="remove-object-option"><i class="fa fa-times fa-lg fa-fw"></i> {{t "close"}}</li>', - // '<li class="add-slot-right"><i class="fa fa-caret-square-o-right fa-lg fa-fw"></i> {{t "addSlotRight"}}</li>', - // '<li class="add-slot-left"><i class="fa fa-caret-square-o-left fa-lg fa-fw"></i> {{t "addSlotLeft}}</li>', - // '<li class="add-slot-above"><i class="fa fa-caret-square-o-up fa-lg fa-fw"></i> {{t "addSlotAbove"}}</li>', - // '<li class="add-slot-below"><i class="fa fa-caret-square-o-down fa-lg fa-fw"></i> {{t "addSlotBelow"}}</li>', - // '</ul>', - // '</a>', - // accessbility-wise it's really bad practice to have h1 tags be used like this - // most screen reader users get a sense of where they are based on header tags - // if these are merely h1 tags for aesthetic purposes, it might be better to make them specific classes - '<h1 class="plus" role="presentation" aria-label="Add item using Link">', - '<span>+</span>', - '<div class="dropIcon">', - '<i class="fa fa-level-down"></i>', - '</div>', - '</h1>', - '<h1 class="addItemText">{{t "addItem"}}</h1>', - '<h1 class="dropMeMessage">{{t "dropToLoad"}}</h1>', - '</div>', - '<a class="addItemLink" role="button" aria-label="Add item"></a>', - '<a class="dropMask"></a>', - '</div>' - ].join('')) - }; - -}(Mirador)); diff --git a/js/src/workspaces/window.js b/js/src/workspaces/window.js deleted file mode 100644 index 9f531f294eb479b1848d29e8f05f6115ca888d99..0000000000000000000000000000000000000000 --- a/js/src/workspaces/window.js +++ /dev/null @@ -1,1157 +0,0 @@ -(function($) { - - $.Window = function(options) { - - jQuery.extend(this, { - state: null, - eventEmitter: null, - element: null, - scrollImageRatio: 0.9, - canvasID: null, - currentCanvasModel: null, - focusImages: [], - imagesList: null, - canvasModels: null, - annotationsList: [], - endpoint: null, - currentImageMode: 'ImageView', - imageModes: ['ImageView', 'BookView'], - originalImageModes:['ImageView', 'BookView'], - focuses: ['ThumbnailsView', 'ImageView', 'ScrollView', 'BookView'], - focusModules: {'ThumbnailsView': null, 'ImageView': null, 'ScrollView': null, 'BookView': null}, - focusOverlaysAvailable: { - 'ThumbnailsView': { - 'overlay' : {'MetadataView' : false}, - 'bottomPanel' : {'' : false} - }, - 'ImageView': { - 'overlay' : {'MetadataView' : false}, - 'bottomPanel' : {'ThumbnailsView' : true} - }, - 'ScrollView': { - 'overlay' : {'MetadataView' : false}, - 'bottomPanel' : {'' : false} - }, - 'BookView': { - 'overlay' : {'MetadataView' : false}, - 'bottomPanel' : {'ThumbnailsView' : true} - } - }, - windowOptions: null, - sidePanel: null, //the actual module for the side panel - annotationsAvailable: { - 'ThumbnailsView' : false, - 'ImageView' : true, - 'ScrollView' : false, - 'BookView' : false - }, - bottomPanel: null, //the actual module for the bottom panel - overlay: null, - annoEndpointAvailable : false, - iconClasses: { - "ImageView" : "fa fa-photo fa-lg fa-fw", - "BookView" : "fa fa-columns fa-lg fa-fw", - "ScrollView" : "fa fa-ellipsis-h fa-lg fa-fw", - "ThumbnailsView" : "fa fa-th fa-lg fa-rotate-90 fa-fw" - }, - userButtons: null - }, options); - - this.init(); - this.bindAnnotationEvents(); - - }; - - $.Window.prototype = { - init: function () { - var _this = this, - manifest = _this.manifest.jsonLd, - focusState = _this.viewType, - templateData = {}; - - this.events = []; - - //make sure annotations list is cleared out when changing objects within window - while(_this.annotationsList.length > 0) { - _this.annotationsList.pop(); - } - //unsubscribe from stale events as they will be updated with new module calls - _this.eventEmitter.unsubscribe(('currentCanvasIDUpdated.' + _this.id)); - //make sure annotation-related events are destroyed so things work properly as we switch between objects - _this.eventEmitter.publish('DESTROY_EVENTS.'+_this.id); - - _this.removeBookView(); - - this.viewingDirection = _this.manifest.getViewingDirection(); - //reset imagemodes and then remove any imageModes that are not available as a focus - //add getting rtl value - if(this.viewingDirection == 'right-to-left'){ - _this.vDirectionStatus = 'rtl'; - } - else{ - _this.vDirectionStatus = ''; - } - this.imageModes = this.originalImageModes; - this.imageModes = jQuery.map(this.imageModes, function(value, index) { - if (jQuery.inArray(value, _this.focuses) === -1) return null; - return value; - }); - - _this.imagesList = _this.manifest.getCanvases(); - if (_this.imagesList.length === 1) { - _this.bottomPanelVisible = false; - } - if (!_this.canvasID) { - // By default, the first in the sequence is the selected Canvas - _this.canvasID = _this.imagesList[0]['@id']; - } - _this.canvases = _this.buildCanvasesIndex(_this.manifest.getCanvases()); - if(_this.vDirectionStatus == 'rtl'){ - _this.imagesListLtr = _this.imagesList.concat(); - _this.imagesListRtl = _this.imagesList.concat(); - _this.imagesListRtl.reverse(); - } - else{ - _this.imagesListRtl = []; - _this.imagesListLtr = []; - } - this.annoEndpointAvailable = !jQuery.isEmptyObject(_this.state.getStateProperty('annotationEndpoint')); - if (!this.canvasControls.annotations.annotationLayer) { - this.canvasControls.annotations.annotationCreation = false; - this.annoEndpointAvailable = false; - this.canvasControls.annotations.annotationState = 'off'; - } - _this.getAnnotations(); - - // if manipulationLayer is true, but all individual options are set to false, set manipulationLayer to false - if (this.canvasControls.imageManipulation.manipulationLayer) { - this.canvasControls.imageManipulation.manipulationLayer = !Object.keys(this.canvasControls.imageManipulation.controls).every(function(element, index, array) { - return _this.canvasControls.imageManipulation.controls[element] === false; - }); - } - - //for use by SidePanel, which needs to know if the current view can have the annotations tab - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.id, - annotationsAvailable: this.annotationsAvailable - }); - - //check config - if (typeof this.bottomPanelAvailable !== 'undefined' && !this.bottomPanelAvailable) { - jQuery.each(this.focusOverlaysAvailable, function(key, value) { - _this.focusOverlaysAvailable[key].bottomPanel = {'' : false}; - }); - } - - templateData.sidePanel = this.sidePanelAvailable; - if (this.sidePanelAvailable) { - templateData.sidePanel = !Object.keys(this.sidePanelOptions).every(function(element, index, array) { - return _this.sidePanelOptions[element] === false; - }); - } - if (typeof this.overlayAvailable !== 'undefined' && !this.overlayAvailable) { - jQuery.each(this.focusOverlaysAvailable, function(key, value) { - _this.focusOverlaysAvailable[key].overlay = {'' : false}; - }); - } else { - templateData.MetadataView = true; - } - - //determine if any buttons should be hidden in template - templateData.iconClasses = {}; - jQuery.each(this.focuses, function(index, value) { - templateData[value] = true; - templateData.iconClasses[value] = _this.iconClasses[value]; - }); - templateData.title = $.JsonLd.getTextValue(manifest.label); - templateData.displayLayout = this.displayLayout; - templateData.layoutOptions = this.layoutOptions; - // if displayLayout is true, but all individual options are set to false, set displayLayout to false - if (this.displayLayout) { - templateData.displayLayout = !Object.keys(this.layoutOptions).every(function(element, index, array) { - return _this.layoutOptions[element] === false; - }); - } - templateData.currentFocusClass = _this.iconClasses[_this.viewType]; - templateData.showFullScreen = _this.fullScreen; - templateData.userButtons = _this.userButtons; - _this.element = jQuery(this.template(templateData)).appendTo(_this.appendTo); - this.element.find('.manifest-info .mirador-tooltip').each(function() { - jQuery(this).qtip({ - content: { - text: jQuery(this).attr('title'), - }, - position: { - my: 'top center', - at: 'bottom center', - adjust: { - method: 'shift', - y: -11 - }, - container: _this.element, - viewport: true - }, - style: { - classes: 'qtip-dark qtip-shadow qtip-rounded' - } - }); - }); - //TODO: this needs to switch the position when it is a right to left manifest - this.element.find('.manifest-info .window-manifest-title').qtip({ - content: { - text: jQuery(this).attr('title') - }, - position: { - my: 'top center', - at: 'bottom left', - adjust: { - method: 'shift', - x: 20, - y: 1 - }, - container: _this.element, - viewport: true - }, - style: { - classes: 'qtip-dark qtip-shadow qtip-rounded' - } - }); - _this.eventEmitter.publish('WINDOW_ELEMENT_UPDATED', {windowId: _this.id, element: _this.element}); - - //clear any existing objects - _this.clearViews(); - _this.clearPanelsAndOverlay(); - - //window needs to listen for any events before it finishes building out the widgets, in case they publish anything - this.listenForActions(); - - //attach view and toggle view, which triggers the attachment of panels or overlays - _this.bindNavigation(); - switch(focusState) { - case 'ThumbnailsView': - _this.toggleThumbnails(_this.canvasID); - break; - case 'ImageView': - _this.toggleImageView(_this.canvasID); - break; - case 'BookView': - _this.toggleBookView(_this.canvasID); - break; - case 'ScrollView': - _this.toggleScrollView(_this.canvasID); - break; - default: - break; - } - - if (_this.state.getSlots().length <= 1) { - _this.element.find('.remove-object-option').hide(); - } - - this.bindEvents(); - - this.bottomPanelVisibility(this.bottomPanelVisible); - this.sidePanelVisibility(this.sidePanelVisible, '0s'); - - this.events.push(this.eventEmitter.subscribe('windowRemoved',function(event,id){ - if(_this.id === id){ - _this.destroy(); - } - })); - }, - - buildCanvasesIndex: function(canvases) { - var _this = this; - - return canvases.reduce(function(canvasesIndex, canvas, index) { - // We want to sign all events coming out of the - // canvas with the windowID. - var canvasEmitter = new $.EventEmitter(); - - // Provide internally-required method proxies. - // - // Sadly, the emitter we use in Mirador - // does not have the "standard" node.js - // eventEmitter interface. So we need to - // alias or proxy its functions here. - // - // We use .bind(emitter) to ensure its - // internal "this"es continue to refer - // to itself. "this" sinks ships. - canvasEmitter.on = canvasEmitter.subscribe.bind(canvasEmitter); - canvasEmitter.off = canvasEmitter.unsubscribe.bind(canvasEmitter); - canvasEmitter.emit = canvasEmitter.publish.bind(canvasEmitter); - - // Here we wrap the internal generic eventedCanvas events - // in events signed for this window. - canvasEmitter.subscribe('image-status-updated', function(event, imageResource) { - _this.eventEmitter.publish('image-status-updated' + _this.id, imageResource); - }); - canvasEmitter.subscribe('image-needed', function(event, imageResource) { - _this.eventEmitter.publish('image-needed' + _this.id, imageResource); - }); - canvasEmitter.subscribe('image-show', function(event, imageResource) { - _this.eventEmitter.publish('image-show' + _this.id, imageResource); - }); - canvasEmitter.subscribe('image-hide', function(event, imageResource) { - _this.eventEmitter.publish('image-hide' + _this.id, imageResource); - }); - canvasEmitter.subscribe('image-removed', function(event, imageResource) { - _this.eventEmitter.publish('image-removed' + _this.id, imageResource); - }); - canvasEmitter.subscribe('image-opacity-updated', function(event, imageResource) { - _this.eventEmitter.publish('image-opacity-updated' + _this.id, imageResource); - }); - - var eventedCanvas = new iiifEventedCanvas({ - canvas: canvas, - index: index, - dispatcher: canvasEmitter // Each canvas gets its own emitter - }); - canvasesIndex[canvas['@id']] = eventedCanvas; - return canvasesIndex; - }, {}); - // Now you can get canvases with window.canvases[CanvasID] - }, - - destroy: function(){ - var _this = this; - this.events.forEach(function(event){ - _this.eventEmitter.unsubscribe(event.name,event.handler); - }); - - this.element.remove(); - }, - - update: function(options) { - jQuery.extend(this, options); - if (this.windowOptions) { - this.windowOptions.osdBounds = null; - this.windowOptions.zoomLevel = null; - } - this.init(); - }, - - // reset whether BookView is available every time as a user might switch between paged and non-paged objects within a single slot/window - removeBookView: function() { - var _this = this; - this.focuses = this.availableViews; - var manifest = this.manifest.jsonLd; - if (manifest.sequences[0].viewingHint) { - if (manifest.sequences[0].viewingHint.toLowerCase() !== 'paged') { - //disable bookview for this object because it's not a paged object - this.focuses = jQuery.grep(this.focuses, function(value) { - return value !== 'BookView'; - }); - } - } - }, - - listenForActions: function() { - var _this = this; - _this.eventEmitter.subscribe('bottomPanelSet.' + _this.id, function(event, visible) { - var panel = _this.element.find('.bottomPanel'); - if (visible === true) { - panel.css({transform: 'translateY(0)'}); - } else { - panel.css({transform: 'translateY(100%)'}); - } - }); - - _this.events.push(_this.eventEmitter.subscribe('HIDE_REMOVE_OBJECT.' + _this.id, function(event) { - _this.element.find('.remove-object-option').hide(); - })); - - _this.events.push(this.eventEmitter.subscribe('SHOW_REMOVE_OBJECT.' + _this.id, function(event) { - _this.element.find('.remove-object-option').show(); - })); - - _this.events.push(_this.eventEmitter.subscribe('sidePanelStateUpdated.' + this.id, function(event, state) { - if (state.open) { - _this.element.find('.mirador-icon-toc').addClass('selected'); - _this.element.find('.view-container').removeClass('maximised'); - } else { - _this.element.find('.mirador-icon-toc').removeClass('selected'); - _this.element.find('.view-container').addClass('maximised'); - } - })); - - // TODO: temporary logic to minimize side panel if only tab is toc and toc is empty - _this.events.push(_this.eventEmitter.subscribe('sidePanelVisibilityByTab.' + this.id, function(event, visible) { - _this.sidePanelVisibility(visible, '0s'); - })); - - _this.events.push(_this.eventEmitter.subscribe('SET_CURRENT_CANVAS_ID.' + this.id, function(event, canvasID) { - if (typeof canvasID === "string") { - _this.setCurrentCanvasID(canvasID); - } else { - if (_this.canvasID !== canvasID.canvasID) { - _this.setCurrentCanvasID(canvasID.canvasID); - } - _this.eventEmitter.publish('fitBounds.' + _this.id, canvasID.bounds); - } - })); - - _this.events.push(_this.eventEmitter.subscribe('REMOVE_CLASS.' + this.id, function(event, className) { - _this.element.find('.view-container').removeClass(className); - })); - - _this.events.push(_this.eventEmitter.subscribe('ADD_CLASS.' + this.id, function(event, className) { - _this.element.find('.view-container').addClass(className); - })); - - _this.events.push(_this.eventEmitter.subscribe('UPDATE_FOCUS_IMAGES.' + this.id, function(event, images) { - _this.updateFocusImages(images.array); - })); - - _this.events.push(_this.eventEmitter.subscribe('HIDE_ICON_TOC.' + this.id, function(event) { - _this.element.find('.mirador-icon-toc').hide(); - })); - - _this.events.push(_this.eventEmitter.subscribe('SHOW_ICON_TOC.' + this.id, function(event) { - _this.element.find('.mirador-icon-toc').show(); - })); - - _this.events.push(_this.eventEmitter.subscribe('SET_BOTTOM_PANEL_VISIBILITY.' + this.id, function(event, visibility) { - if (typeof visibility !== 'undefined' && visibility !== null) { - _this.bottomPanelVisibility(visibility); - } else { - _this.bottomPanelVisibility(_this.bottomPanelVisible); - } - })); - - _this.events.push(_this.eventEmitter.subscribe('TOGGLE_BOTTOM_PANEL_VISIBILITY.' + this.id, function(event) { - var visible = !_this.bottomPanelVisible; - _this.bottomPanelVisibility(visible); - })); - - _this.events.push(_this.eventEmitter.subscribe('DISABLE_WINDOW_FULLSCREEN', function(event) { - _this.element.find('.mirador-osd-fullscreen').hide(); - })); - - _this.events.push(_this.eventEmitter.subscribe('ENABLE_WINDOW_FULLSCREEN', function(event) { - _this.element.find('.mirador-osd-fullscreen').show(); - })); - }, - - bindEvents: function() { - var _this = this; - - //this event should trigger from layout - jQuery(window).resize($.debounce(function(){ - if (_this.focusModules.ScrollView) { - var containerHeight = _this.element.find('.view-container').height(); - var triggerShow = false; - if (_this.viewType === "ScrollView") { - triggerShow = true; - } - _this.focusModules.ScrollView.reloadImages(Math.floor(containerHeight * _this.scrollImageRatio), triggerShow); - } - }, 300)); - - this.element.find('.mirador-osd-fullscreen').on('click', function() { - if ($.fullscreenElement()) { - $.exitFullscreen(); - } else { - $.enterFullscreen(_this.element[0]); - } - }); - - jQuery(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange", function() { - _this.toggleFullScreen(); - }); - - }, - - bindAnnotationEvents: function() { - var _this = this; - _this.eventEmitter.subscribe('annotationCreated.'+_this.id, function(event, oaAnno, eventCallback) { - var annoID; - //first function is success callback, second is error callback - _this.endpoint.create(oaAnno, function(data) { - //the success callback expects the OA annotation be returned - annoID = String(data['@id']); //just in case it returns a number - _this.annotationsList.push(data); - _this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', {windowId: _this.id, annotationsList: _this.annotationsList}); - //anything that depends on the completion of other bits, call them now - eventCallback(); - }, - function() { - //provide useful feedback to user - console.log("There was an error saving this new annotation"); - }); - }); - - _this.eventEmitter.subscribe('annotationUpdated.'+_this.id, function(event, oaAnno) { - //first function is success callback, second is error callback - _this.endpoint.update(oaAnno, function(data) { - jQuery.each(_this.annotationsList, function(index, value) { - if (value['@id'] === data['@id']) { - _this.annotationsList[index] = data; - return false; - } - }); - _this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', {windowId: _this.id, annotationsList: _this.annotationsList}); - }, - function() { - console.log("There was an error updating this annotation"); - }); - }); - - _this.eventEmitter.subscribe('annotationDeleted.'+_this.id, function(event, annoId) { - //remove from endpoint - //first function is success callback, second is error callback - _this.endpoint.deleteAnnotation(annoId, function() { - _this.annotationsList = jQuery.grep(_this.annotationsList, function(e){ return e['@id'] !== annoId; }); - _this.eventEmitter.publish(('removeOverlay.' + _this.id), annoId); - _this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', {windowId: _this.id, annotationsList: _this.annotationsList}); - }, - function() { - // console.log("There was an error deleting this annotation"); - }); - }); - - _this.eventEmitter.subscribe('updateAnnotationList.'+_this.id, function(event) { - while(_this.annotationsList.length > 0) { - _this.annotationsList.pop(); - } - _this.getAnnotations(); - }); - }, - - clearViews: function() { - var _this = this; - jQuery.each(_this.focusModules, function(key, value) { - _this.focusModules[key] = null; - }); - }, - - clearPanelsAndOverlay: function() { - this.sidePanel = null; - this.bottomPanel = null; - this.overlay = null; - }, - - // only panels and overlay available to this view, make rest hidden while on this view - updatePanelsAndOverlay: function(state) { - var _this = this; - - jQuery.each(this.focusOverlaysAvailable[state], function(panelType, viewOptions) { - jQuery.each(viewOptions, function(view, displayed) { - //instantiate any panels that exist for this view but are still null - if (view !== '' && _this[panelType] === null) { - _this[panelType] = new $[view]({ - manifest: _this.manifest, - appendTo: _this.element.find('.'+panelType), - state: _this.state, - eventEmitter: _this.eventEmitter, - windowId: _this.id, - panel: true, - canvasID: _this.canvasID, - canvases: _this.canvases, - imagesList: _this.imagesList, - imagesListLtr: _this.imagesListLtr, - imagesListRtl: _this.imagesListRtl, - vDirectionStatus: _this.vDirectionStatus, - thumbInfo: {thumbsHeight: 80, listingCssCls: 'panel-listing-thumbs', thumbnailCls: 'panel-thumbnail-view'} - }); - } - - //refresh displayed in case TableOfContents module changed it - displayed = _this.focusOverlaysAvailable[state][panelType][view]; - - //toggle any valid panels - if (view !== '' && displayed) { - _this.togglePanels(panelType, displayed, view, state); - } - - //hide any panels instantiated but not available to this view - if (view === '' && _this[panelType]) { - _this.togglePanels(panelType, displayed, view, state); - } - - //lastly, adjust height for non-existent panels - if (view === '') { - _this.adjustFocusSize(panelType, displayed); - } - - }); - }); - - }, - - updateSidePanel: function() { - if (!this.sidePanelAvailable) { - return; - } - var _this = this, - tocTabAvailable = _this.sidePanelOptions.tocTabAvailable, - annotationsTabAvailable = _this.sidePanelOptions.annotations, - layersTabAvailable = _this.sidePanelOptions.layersTabAvailable, - searchTabAvailable = _this.sidePanelOptions.searchTabAvailable, - hasStructures = true; - - var structures = _this.manifest.getStructures(); - if (!structures || structures.length === 0) { - hasStructures = false; - } - - if (this.sidePanel === null) { - this.sidePanel = new $.SidePanel({ - - windowId: _this.id, - state: _this.state, - eventEmitter: _this.eventEmitter, - appendTo: _this.element.find('.sidePanel'), - manifest: _this.manifest, - canvasID: _this.canvasID, - canvases: _this.canvases, - layersTabAvailable: layersTabAvailable, - tocTabAvailable: tocTabAvailable, - searchTabAvailable: searchTabAvailable, - annotationsTabAvailable: annotationsTabAvailable, - hasStructures: hasStructures - - }); - } else { - this.sidePanel.update('annotations', annotationsTabAvailable); - } - }, - - get: function(prop, parent) { - if (parent) { - return this[parent][prop]; - } - return this[prop]; - }, - - set: function(prop, value, options) { - if (options) { - this[options.parent][prop] = value; - } else { - this[prop] = value; - } - }, - - /*setTOCBoolean: function(boolValue) { - var _this = this; - jQuery.each(this.focusOverlaysAvailable, function(key, value) { - _this.focusOverlaysAvailable[key].sidePanel.TableOfContents = boolValue; - }); - //remove thumbnail icon if not available for this object - if (!boolValue) { - this.element.find('.mirador-icon-toc').hide(); - } - },*/ - - togglePanels: function(panelType, panelState, viewType, focusState) { - //update state in focusOverlaysAvailable - this.focusOverlaysAvailable[focusState][panelType][viewType] = panelState; - this[panelType].toggle(panelState); - this.adjustFocusSize(panelType, panelState); - }, - - sidePanelVisibility: function(visible, transitionDuration) { - var _this = this; - _this.sidePanelVisible = visible; - var tocIconElement = this.element.find('.mirador-icon-toc'), - sidePanelElement = this.element.find('.sidePanel'), - viewContainerElement = this.element.find('.view-container'); - - sidePanelElement.css('transition-duration', transitionDuration); - viewContainerElement.css('transition', transitionDuration); - if (visible && sidePanelElement.hasClass('minimized')) { - tocIconElement.addClass('selected'); - sidePanelElement.removeClass('minimized').width(280).css('border-right', '1px solid lightgray'); - viewContainerElement.css('margin-left', 280); - } else if (!visible && !sidePanelElement.hasClass('minimized')) { - tocIconElement.removeClass('selected'); - viewContainerElement.css('margin-left', 0); - sidePanelElement.addClass('minimized').css('border', 'none').width(0); - } - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.id, - sidePanelVisible: visible - }); - }, - - bottomPanelVisibility: function(visible) { - var _this = this; - _this.bottomPanelVisible = visible; - _this.eventEmitter.publish(('bottomPanelSet.' + _this.id), visible); - _this.eventEmitter.publish(('windowUpdated'), { - id: _this.id, - bottomPanelVisible: visible - }); - }, - - adjustFocusSize: function(panelType, panelState) { - if (panelType === 'bottomPanel') { - this.focusModules[this.viewType].adjustHeight('focus-max-height', panelState); - } else if (panelType === 'sidePanel') { - this.focusModules[this.viewType].adjustWidth('focus-max-width', panelState); - } else {} - }, - - toggleMetadataOverlay: function(focusState) { - var _this = this; - var currentState = this.focusOverlaysAvailable[focusState].overlay.MetadataView; - if (currentState) { - this.element.find('.mirador-icon-metadata-view').removeClass('selected'); - } else { - this.element.find('.mirador-icon-metadata-view').addClass('selected'); - } - //set overlay for all focus types to same value - jQuery.each(this.focusOverlaysAvailable, function(focusType, options) { - if (focusState !== focusType) { - this.overlay.MetadataView = !currentState; - } - }); - //and then do toggling for current focus - this.togglePanels('overlay', !currentState, 'MetadataView', focusState); - }, - - toggleFocus: function(focusState, imageMode) { - var _this = this; - - this.viewType = focusState; - if (imageMode && jQuery.inArray(imageMode, this.imageModes) > -1) { - this.currentImageMode = imageMode; - } - //set other focusStates to false (toggle to display none) - jQuery.each(this.focusModules, function(focusKey, module) { - if (module && focusState !== focusKey) { - module.toggle(false); - } - }); - this.focusModules[focusState].toggle(true); - this.updateManifestInfo(); - this.updatePanelsAndOverlay(focusState); - this.updateSidePanel(); - _this.eventEmitter.publish("focusUpdated" + _this.id, focusState); - _this.eventEmitter.publish("windowUpdated", { - id: _this.id, - viewType: _this.viewType, - canvasID: _this.canvasID, - imageMode: _this.currentImageMode, - loadedManifest: _this.manifest.jsonLd['@id'], - slotAddress: _this.slotAddress, - canvases: _this.canvases - }); - }, - - toggleThumbnails: function(canvasID) { - this.canvasID = canvasID; - if (this.focusModules.ThumbnailsView === null) { - this.focusModules.ThumbnailsView = new $.ThumbnailsView({ - manifest: this.manifest, - appendTo: this.element.find('.view-container'), - state: this.state, - eventEmitter: this.eventEmitter, - windowId: this.id, - canvasID: this.canvasID, - imagesList: this.imagesList, - imagesListLtr: this.imagesListLtr, - vDirectionStatus: this.vDirectionStatus - }); - } else { - var view = this.focusModules.ThumbnailsView; - view.updateImage(canvasID); - } - this.toggleFocus('ThumbnailsView', ''); - }, - - toggleImageView: function(canvasID) { - this.canvasID = canvasID; - if (this.focusModules.ImageView === null) { - this.focusModules.ImageView = new $.ImageView({ - manifest: this.manifest, - appendTo: this.element.find('.view-container'), - qtipElement: this.element, - windowId: this.id, - state: this.state, - eventEmitter: this.eventEmitter, - canvasID: canvasID, - canvases: this.canvases, - imagesList: this.imagesList, - imagesListRtl: this.imagesListRtl, - imagesListLtr: this.imagesListLtr, - vDirectionStatus: this.vDirectionStatus, - osdOptions: this.windowOptions, - bottomPanelAvailable: this.bottomPanelAvailable, - annoEndpointAvailable: this.annoEndpointAvailable, - canvasControls: this.canvasControls, - annotationState : this.canvasControls.annotations.annotationState - }); - } else { - this.focusModules.ImageView.updateImage(canvasID); - } - this.toggleFocus('ImageView', 'ImageView'); - }, - - toggleBookView: function(canvasID) { - this.canvasID = canvasID; - if (this.focusModules.BookView === null) { - this.focusModules.BookView = new $.BookView({ - manifest: this.manifest, - appendTo: this.element.find('.view-container'), - windowId: this.id, - state: this.state, - eventEmitter: this.eventEmitter, - canvasID: canvasID, - imagesList: this.imagesList, - imagesListRtl: this.imagesListRtl, - imagesListLtr: this.imagesListLtr, - vDirectionStatus: this.vDirectionStatus, - viewingDirection: this.viewingDirection, - osdOptions: this.windowOptions, - bottomPanelAvailable: this.bottomPanelAvailable - }); - } else { - var view = this.focusModules.BookView; - view.updateImage(canvasID); - } - this.toggleFocus('BookView', 'BookView'); - }, - - toggleScrollView: function(canvasID) { - if(this.vDirectionStatus == 'rtl'){ - this.imagesList = this.imagesListRtl.concat(); - } - this.canvasID = canvasID; - if (this.focusModules.ScrollView === null) { - var containerHeight = this.element.find('.view-container').height(); - this.focusModules.ScrollView = new $.ScrollView({ - manifest: this.manifest, - appendTo: this.element.find('.view-container'), - state: this.state, - eventEmitter: this.eventEmitter, - windowId: this.id, - canvasID: this.canvasID, - imagesList: this.imagesList, - imagesListLtr: this.imagesListLtr, - vDirectionStatus: this.vDirectionStatus, - thumbInfo: {thumbsHeight: Math.floor(containerHeight * this.scrollImageRatio), listingCssCls: 'scroll-listing-thumbs', thumbnailCls: 'scroll-view'} - }); - } else { - var view = this.focusModules.ScrollView; - view.updateImage(canvasID); - } - this.toggleFocus('ScrollView', ''); - }, - - updateFocusImages: function(imageList) { - this.focusImages = imageList; - if (this.bottomPanel) { this.bottomPanel.updateFocusImages(this.focusImages); } - }, - - setCurrentCanvasID: function(canvasID) { - var _this = this; - - _this.canvasID = canvasID; - - // TODO: Completely remove the 'removeTooltips' event. They are not actions and - // they do not represent any state change. They are essentially - // function calls, which should be handled as responses to the - // publication of the state update event currentCanvasIDUpdated - // below. - _this.eventEmitter.publish('removeTooltips.' + _this.id); - while(_this.annotationsList.length > 0) { - _this.annotationsList.pop(); - } - this.getAnnotations(); - switch(this.currentImageMode) { - case 'ImageView': - this.toggleImageView(this.canvasID); - break; - case 'BookView': - this.toggleBookView(this.canvasID); - break; - default: - break; - } - _this.eventEmitter.publish(('currentCanvasIDUpdated.' + _this.id), canvasID); - }, - - replaceWindow: function(newSlotAddress, newElement) { - this.slotAddress = newSlotAddress; - this.appendTo = newElement; - this.update(); - }, - - setCursorFrameStart: function(canvasID) { - }, - - updateManifestInfo: function() { - var _this = this; - _this.element.find('.mirador-icon-view-type > i:first').removeClass().addClass(_this.iconClasses[_this.viewType]); - - if (this.focusOverlaysAvailable[this.viewType].overlay.MetadataView) { - this.element.find('.mirador-icon-metadata-view').addClass('selected'); - } - }, - - /* - Merge all annotations for current image/canvas from various sources - Pass to any widgets that will use this list - */ - getAnnotations: function() { - //first look for manifest annotations - var _this = this, - urls = _this.manifest.getAnnotationsListUrls(_this.canvasID); - - if (urls.length !== 0) { - jQuery.each(urls, function(index, url) { - jQuery.getJSON(url, function(list) { - var annotations = list.resources; - jQuery.each(annotations, function(index, value) { - //if there is no ID for this annotation, set a random one - if (typeof value['@id'] === 'undefined') { - value['@id'] = $.genUUID(); - } - //indicate this is a manifest annotation - which affects the UI - value.endpoint = "manifest"; - }); - // publish event only if one url fetch is successful - _this.annotationsList = _this.annotationsList.concat(annotations); - _this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', {windowId: _this.id, annotationsList: _this.annotationsList}); - }); - }); - } - - // next check endpoint - if (this.annoEndpointAvailable) { - var dfd = jQuery.Deferred(), - module = _this.state.getStateProperty('annotationEndpoint').module, - options = _this.state.getStateProperty('annotationEndpoint').options || {}; //grab anything from the config that should be passed directly to the endpoint - options.name = _this.state.getStateProperty('annotationEndpoint').name; - // One annotation endpoint per window, the endpoint - // is a property of the instance. - if ( _this.endpoint && _this.endpoint !== null ) { - _this.endpoint.set('dfd', dfd); - } else { - options.dfd = dfd; - options.windowID = _this.id; - options.imagesList = _this.imagesList; - options.eventEmitter = _this.eventEmitter; - _this.endpoint = new $[module](options); - } - _this.endpoint.search({ "uri" : _this.canvasID}); - - dfd.done(function(loaded) { - _this.annotationsList = _this.annotationsList.concat(_this.endpoint.annotationsList); - // clear out some bad data - _this.annotationsList = jQuery.grep(_this.annotationsList, function (value, index) { - if (typeof value.on === "undefined") { - return false; - } - return true; - }); - _this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', {windowId: _this.id, annotationsList: _this.annotationsList}); - }); - } - }, - - toggleFullScreen: function() { - var _this = this; - if (!OpenSeadragon.isFullScreen()) { - this.element.find('.mirador-osd-fullscreen i').removeClass('fa-compress').addClass('fa-expand'); - this.element.find('.mirador-osd-toggle-bottom-panel').show(); - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.id, true); - } else { - this.element.find('.mirador-osd-fullscreen i').removeClass('fa-expand').addClass('fa-compress'); - this.element.find('.mirador-osd-toggle-bottom-panel').hide(); - _this.eventEmitter.publish('SET_BOTTOM_PANEL_VISIBILITY.' + this.id, false); - } - }, - - // based on currentFocus - bindNavigation: function() { - var _this = this; - - this.element.find('.mirador-icon-view-type').on('mouseenter', - function() { - _this.element.find('.image-list').stop().slideFadeToggle(300); - }).on('mouseleave', - function() { - _this.element.find('.image-list').stop().slideFadeToggle(300); - }); - - this.element.find('.mirador-icon-window-menu').on('mouseenter', - function() { - _this.element.find('.slot-controls').stop().slideFadeToggle(300); - }).on('mouseleave', - function() { - _this.element.find('.slot-controls').stop().slideFadeToggle(300); - }); - - this.element.find('.single-image-option').on('click', function() { - _this.toggleImageView(_this.canvasID); - }); - - this.element.find('.book-option').on('click', function() { - _this.toggleBookView(_this.canvasID); - }); - - this.element.find('.scroll-option').on('click', function() { - _this.toggleScrollView(_this.canvasID); - }); - - this.element.find('.thumbnails-option').on('click', function() { - _this.toggleThumbnails(_this.canvasID); - }); - - this.element.find('.mirador-icon-metadata-view').on('click', function() { - _this.toggleMetadataOverlay(_this.viewType); - }); - - this.element.find('.mirador-icon-toc').on('click', function() { - _this.sidePanelVisibility(!_this.sidePanelVisible, '0.3s'); - }); - - this.element.find('.new-object-option').on('click', function() { - _this.eventEmitter.publish('ADD_ITEM_FROM_WINDOW', _this.id); - }); - - this.element.find('.remove-object-option').on('click', function() { - _this.eventEmitter.publish('REMOVE_SLOT_FROM_WINDOW', _this.id); - }); - - this.element.find('.add-slot-right').on('click', function() { - _this.eventEmitter.publish('SPLIT_RIGHT_FROM_WINDOW', _this.id); - }); - - this.element.find('.add-slot-left').on('click', function() { - _this.eventEmitter.publish('SPLIT_LEFT_FROM_WINDOW', _this.id); - }); - - this.element.find('.add-slot-below').on('click', function() { - _this.eventEmitter.publish('SPLIT_DOWN_FROM_WINDOW', _this.id); - }); - - this.element.find('.add-slot-above').on('click', function() { - _this.eventEmitter.publish('SPLIT_UP_FROM_WINDOW', _this.id); - }); - }, - - // template should be based on workspace type - - template: $.Handlebars.compile([ - '<div class="window">', - '<div class="manifest-info">', - '<div class="window-manifest-navigation">', - '{{#if userButtons}}', - '{{windowuserbtns userButtons}}', - '{{/if}}', - '<a href="javascript:;" class="mirador-btn mirador-icon-view-type" role="button" title="{{t "viewTypeTooltip"}}" aria-label="{{t "viewTypeTooltip"}}">', - '<i class="{{currentFocusClass}}"></i>', - '<i class="fa fa-caret-down"></i>', - '<ul class="dropdown image-list">', - '{{#if ImageView}}', - '<li class="single-image-option"><i class="{{iconClasses.ImageView}}"></i> {{t "imageView"}}</li>', - '{{/if}}', - '{{#if BookView}}', - '<li class="book-option"><i class="{{iconClasses.BookView}}"></i> {{t "bookView"}}</li>', - '{{/if}}', - '{{#if ScrollView}}', - '<li class="scroll-option"><i class="{{iconClasses.ScrollView}}"></i> {{t "scrollView"}}</li>', - '{{/if}}', - '{{#if ThumbnailsView}}', - '<li class="thumbnails-option"><i class="{{iconClasses.ThumbnailsView}}"></i> {{t "thumbnailsView"}}</li>', - '{{/if}}', - '</ul>', - '</a>', - '{{#if MetadataView}}', - '<a href="javascript:;" class="mirador-btn mirador-icon-metadata-view mirador-tooltip" role="button" title="{{t "metadataTooltip"}}" aria-label="{{t "metadataTooltip"}}">', - '<i class="fa fa-info-circle fa-lg fa-fw"></i>', - '</a>', - '{{/if}}', - '{{#if showFullScreen}}', - '<a class="mirador-btn mirador-osd-fullscreen mirador-tooltip" role="button" title="{{t "fullScreenWindowTooltip"}}" aria-label="{{t "fullScreenWindowTooltip"}}">', - '<i class="fa fa-lg fa-fw fa-expand"></i>', - '</a>', - '{{/if}}', - '</div>', - '{{#if layoutOptions.close}}', - '<a href="javascript:;" class="mirador-btn mirador-close-window remove-object-option mirador-tooltip" title="{{t "closeTooltip"}}" aria-label="{{t "closeTooltip"}}"><i class="fa fa-times fa-lg fa-fw"></i></a>', - '{{/if}}', - '{{#if displayLayout}}', - '<a href="javascript:;" class="mirador-btn mirador-icon-window-menu" title="{{t "changeLayoutTooltip"}}" aria-label="{{t "changeLayoutTooltip"}}"><i class="fa fa-th-large fa-lg fa-fw"></i><i class="fa fa-caret-down"></i>', - '<ul class="dropdown slot-controls">', - '{{#if layoutOptions.newObject}}', - '<li class="new-object-option"><i class="fa fa-refresh fa-lg fa-fw"></i> {{t "newObject"}}</li>', - '<hr class="menu-divider"/>', - '{{/if}}', - '{{#if layoutOptions.slotRight}}', - '<li class="add-slot-right"><i class="fa fa-arrow-circle-right fa-lg fa-fw"></i> {{t "addSlotRight"}}</li>', - '{{/if}}', - '{{#if layoutOptions.slotLeft}}', - '<li class="add-slot-left"><i class="fa fa-arrow-circle-left fa-lg fa-fw"></i> {{t "addSlotLeft"}}</li>', - '{{/if}}', - '{{#if layoutOptions.slotAbove}}', - '<li class="add-slot-above"><i class="fa fa-arrow-circle-up fa-lg fa-fw"></i> {{t "addSlotAbove"}}</li>', - '{{/if}}', - '{{#if layoutOptions.slotBelow}}', - '<li class="add-slot-below"><i class="fa fa-arrow-circle-down fa-lg fa-fw"></i> {{t "addSlotBelow"}}</li>', - '{{/if}}', - '</ul>', - '</a>', - '{{/if}}', - '{{#if sidePanel}}', - '<a href="javascript:;" class="mirador-btn mirador-icon-toc selected mirador-tooltip" title="{{t "sidePanelTooltip"}}" aria-label="{{t "sidePanelTooltip"}}"><i class="fa fa-bars fa-lg fa-fw"></i></a>', - '{{/if}}', - '<h3 class="window-manifest-title" title="{{{title}}}" aria-label="{{{title}}}">{{{title}}}</h3>', - '</div>', - '<div class="content-container">', - '{{#if sidePanel}}', - '<div class="sidePanel">', - '</div>', - '{{/if}}', - '<div class="overlay"></div>', - '<div class="view-container {{#unless sidePanel}}focus-max-width{{/unless}}">', - '<div class="bottomPanel">', - '</div>', - '</div>', - '</div>', - '</div>' - - ].join('')) - }; - - var processUserButtons = function (buttons){ - return buttons.map(function(button, index){ - return processUserButton(button); - }); - }; - - var processUserButton = function(button){ - var $a = jQuery('<a>'); - var $i = jQuery('<i>', {'class': 'fa fa-lg fa-fw'}); - try { - if(!button.iconClass){ - throw "userButtons must have an iconClass"; - } - // add custom attributes to the button element - if(button.attributes){ - $a.attr(button.attributes); - } - // add default class to the button element - $a.addClass('mirador-btn'); - // add custom classes to the icon element - $i.addClass(button.iconClass); - // append the icon element to the button element - $a.append($i); - return $a.get(0).outerHTML; - }catch(error){ - console && console.error && console.error(error); - return ''; - } - }; - - $.Handlebars.registerHelper('windowuserbtns', function(userButtons){ - return new $.Handlebars.SafeString( - processUserButtons(userButtons).join('') - ); - }); - -}(Mirador)); diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index 21d5a881ac4c13cf441136ba45763a0c89a99ff4..0000000000000000000000000000000000000000 --- a/karma.conf.js +++ /dev/null @@ -1,112 +0,0 @@ -// Karma configuration -// Generated on Tue May 03 2016 11:44:23 GMT-0400 (EDT) - -module.exports = function(config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['jasmine'], - - - // list of files / patterns to load in the browser - files: [ - // vendors - 'node_modules/jquery/dist/jquery.min.js', - 'node_modules/jquery-ui-dist/jquery-ui.min.js', - 'node_modules/jquery.scrollto/jquery.scrollTo.min.js', - 'node_modules/jstree/dist/jstree.min.js', - 'node_modules/qtip2/dist/jquery.qtip.min.js', - 'node_modules/javascript-state-machine/state-machine.min.js', - 'node_modules/tinymce/tinymce.min.js', - 'node_modules/handlebars/dist/handlebars.js', - 'node_modules/openseadragon/build/openseadragon/openseadragon.js', - 'node_modules/d3/d3.min.js', - 'node_modules/jquery-plugin/dist/ba-tiny-pubsub.js', - 'node_modules/urijs/src/URI.min.js', - 'node_modules/mousetrap/mousetrap.min.js', - 'js/lib/isfahan.js', - 'node_modules/paper/dist/paper-core.min.js', - 'node_modules/spectrum-colorpicker/spectrum.js', - 'node_modules/i18next/i18next.min.js', - 'node_modules/i18next-browser-languagedetector/i18nextBrowserLanguageDetector.min.js', - 'node_modules/i18next-xhr-backend/i18nextXHRBackend.min.js', - 'js/lib/modernizr.custom.js', - 'node_modules/sanitize-html/dist/sanitize-html.min.js', - 'node_modules/sinon/pkg/sinon.js', - 'node_modules/jasmine-jquery/lib/jasmine-jquery.js', - 'node_modules/iiif-evented-canvas/dist/iiif-evented-canvas.umd.min.js', - // app - 'js/src/mirador.js', - 'js/src/utils/handlebars.js', - 'js/src/*.js', - 'js/src/viewer/*.js', - 'js/src/manifests/*.js', - 'js/src/annotations/*.js', - 'js/src/workspaces/*.js', - 'js/src/widgets/*.js', - 'js/src/utils/*.js', - // spec - 'spec/**/*.stub.js', - {pattern: 'spec/data/*', watched: true, served: true, included: false}, - {pattern: 'spec/fixtures/*json', watched: true, served: true, included: false} - ].concat(!process.env.KARMA_SPECS ? ['spec/**/*.js'] : process.env.KARMA_SPECS.split(',')), - - - // list of files to exclude - // exclude: [ - // This file holds the integration tests for Mirador - // 'spec/mirador.test.js' - // ], - - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - 'js/src/**/*.js': ['coverage'] - }, - - proxies: { - '/spec': 'http://localhost:9876/base/spec' - }, - - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress', 'coverage', 'coveralls'], - - coverageReporter: { - type: 'lcov', // lcov or lcovonly are required for generating lcov.info files - dir: 'coverage/' - }, - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['PhantomJS'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: true - }); -}; diff --git a/locales/ar/translation.json b/locales/ar/translation.json deleted file mode 100644 index 92aafd34ad2b9f4f7f45ab9d81e3e87f354a5ff7..0000000000000000000000000000000000000000 --- a/locales/ar/translation.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "addItem": "أضف عنصراً", - "addNewObject": "أضف موضوعاً جديداً من الرابط", - "addSlotAbove": "أضف شريحة في الأعلى", - "addSlotBelow": "أصف شريحة في الأسفل", - "addSlotLeft": "أضف شريحة إلى اليسار", - "addSlotRight": "أضف شريحة إلى اليمين", - "addTagsHere": "أضف الإشارة هنا", - "annotationTooltip": "تبديل التعليقات التوضيحية", - "attribution": "إسناد", - "bookmark": "أضف للمفضلة", - "bookmarkTitle": "أضف للمفضلة أو شارك مساحة العمل", - "bookmarkTooltip": "أضف مثال ميرادور هذا للمفضلة", - "bookView": "مشاهدة الكتاب", - "borderColorTooltip": "اختر لون الحدود", - "borderTypeTooltip": "اختر نمط الحدود", - "brightnessTooltip": "ضبط السطوع", - "cancel": "إلغاء", - "cancelAnnotation": "هل تريد إلغاء التعليق التوضيحي؟", - "changeLayout": "غيّر الإطار", - "changeLayoutTooltip": "تغيير عدد الفتحات المرئية", - "close": "أغلق", - "closeTooltip": "أغلق هذه النافذة", - "comments": "التعليقات", - "contrastTooltip": "ضبط التباين", - "dashed": "الشرطات", - "delete": "مسح", - "deleteAnnotation": "هل تريد حذف هذا التعليق التوضيحي وجميع الأشكال ذات الصلة؟", - "deleteShape": "هل تريد حذف هذا الشكل؟", - "description": "وصف", - "details": "تفاصيل", - "disabledLayersTabMessage": "تتوفر طبقات الصور في عرض الصفحة الواحدة فقط", - "disabledOpacityMessage": "غير مفعل", - "dotDashed": "Dots & Dashes", - "dropToLoad": "إسقاط لتحميل واضح", - "edit": "تحرير", - "editModalBtnDeleteAnnotation": "احذف هذا التعليق التوضيحي", - "editModalBtnSaveWithoutShapes": "احفظ التعليق التوضيحي بدون الأشكال", - "editModalSaveAnnotationWithNoShapesMsg": "لا يوجد أشكال ذات علاقة بالتعليق التوضيحي", - "ellipseTooltip": "الشرح البيضاوي", - "emptyTemplateMessage": "لا توجد طبقات صور على هذه اللوحة", - "fillColorTooltip": "اختر لون الفلتر", - "filterObjects": "فلتر المواضيع", - "freehandTooltip": "تعليق توضيحي حر الشكل", - "fullScreen": "ملء الشاشة", - "fullScreenTooltip": "تبديل ملء الشاشة", - "fullScreenWindowTooltip": "بدّل هذه النافذة إلى ملء الشاشة", - "grayscaleTooltip": "بدّل التدرّج الرمادي", - "imageManipulationTooltip": "تبديل معالجة الصورة", - "imagesFor": "صور ل", - "imageView": "مشاهدة الصورة", - "invertTooltip": "اعكس الألوان", - "item": "عنصر", - "items": "عناصر", - "label": "العنوان", - "less": "أقلّ", - "license": "الرخصة", - "links": "روابط", - "load": "عبئ", - "logo": "الشعار", - "manifest": "IIIF قائمة", - "metadataTooltip": "عرض معلومات / بيانات وصفية عن هذا الكائن", - "mirrorTooltip": "انعكاس الصورة", - "more": "أكثر", - "newObject": "موضوع جديد", - "no": "لا", - "noIndex": "لا يتوفر فهرس", - "noLabel": "بلا عنوان", - "objectMetadata": "البيانات الوصفية للموضوع", - "opacityLabel": "الغموض", - "pinTooltip": "إضافة تعليق توضيحي", - "pointerTooltip": "المؤشر", - "polygonTooltip": "تعليق مضلع", - "rectangleTooltip": "تعليق مستطيل", - "related": "ذو صلة", - "resetTooltip": "إعادة ضبط الصورة", - "rights": "الحقوق", - "rightsStatus": "حالة الحقوق", - "rotateLeftTooltip": "تدوير 90 درجة لليسار", - "rotateRightTooltip": "تدوير 90 درجة لليمين", - "saturationTooltip": "ضبط التشبّع", - "save": "حفظ", - "scrollView": "مشاهدة الانتقال", - "searchLabelSelect": "اختر خدمة البحث", - "searchNotAvailable": "لا تتوفر خدمة البحث", - "searchText": "ابحث في النصّ", - "seeAlso": "شاهد أيضاً", - "selectGrid": "اختر تقسيم الشاشة في الأسفل", - "sidePanelTooltip": "تبديل االلوحة الجانبية", - "solid": "صلب", - "submit": "تسليم", - "tabTitleIndex": "الفهرس", - "tabTitleLayers": "الطبقات", - "tabTitleSearch": "البحث", - "thick": "سميك", - "thickest": "السماكة", - "thumbnailsView": "مشاهدة الصورة المصغرة", - "unspecified": "غير محدد", - "url": "الرابط", - "viewTypeTooltip": "غيّر نوع العرض", - "visibleLabel": "مرئي", - "within": "ضمن", - "yes": "نعم" -} diff --git a/locales/de/translation.json b/locales/de/translation.json deleted file mode 100644 index 033d39b71ca34d4adc64eb58315beea75bf3ec98..0000000000000000000000000000000000000000 --- a/locales/de/translation.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "addItem": "Objekt hinzufügen", - "addNewObject": "Objekt über URL hinzufügen", - "addSlotAbove": "Bereich oben hinzufügen", - "addSlotBelow": "Bereich unten hinzufügen", - "addSlotLeft": "Bereich links hinzufügen", - "addSlotRight": "Bereich rechts hinzufügen", - "addTagsHere": "Tags hier hinzufügen", - "annotationTooltip": "Annotationen", - "attribution": "Bereitgestellt von", - "bookmark": "Lesezeichen", - "bookmarkTitle": "Ansicht speichern oder teilen", - "bookmarkTooltip": "Lesezeichen für diese Mirador Instanz erstellen", - "bookView": "Doppelseite", - "borderColorTooltip": "Randfarbe wählen", - "borderTypeTooltip": "Randstil wählen", - "brightnessTooltip": "Helligkeit anpassen", - "cancel": "Abbrechen", - "cancelAnnotation": "Wollen Sie diese Annotation verwerfen?", - "changeLayout": "Layout ändern", - "changeLayoutTooltip": "Anzahl der sichtbaren Slots anpassen", - "close": "Schließen", - "closeTooltip": "Schließt das Fenster", - "comments": "Kommentare", - "contrastTooltip": "Kontrast anpassen", - "dashed":"Striche", - "delete": "Löschen", - "deleteAnnotation": "Wollen Sie diese Annotation und alle dazugehörigen Marker entfernen?", - "deleteShape":"Wollen Sie diesen Marker löschen?", - "description": "Beschreibung", - "details": "Details", - "disabledLayersTabMessage": "Bildebenen sind nur in der Einzelbildanzeige verfügbar", - "disabledOpacityMessage": "deaktiviert", - "dotDashed":"Punkte & Striche", - "dropToLoad": "Hier ablegen um das Manifest zu laden", - "edit": "Bearbeiten", - "editModalBtnDeleteAnnotation":"Annotation löschen", - "editModalBtnSaveWithoutShapes":"Annotation ohne Marker speichern", - "editModalSaveAnnotationWithNoShapesMsg":"Mit dieser Annotation sind keine Marker verknüpft", - "ellipseTooltip": "Oval", - "emptyTemplateMessage": "Auf diesem Canvas gibt es keine Bildebenen", - "fillColorTooltip": "Füllfarbe wählen", - "filterObjects": "Objekte filtern", - "freehandTooltip": "Freihand", - "fullScreen": "Vollbild", - "fullScreenTooltip": "Vollbild", - "fullScreenWindowTooltip": "Dieses Fenster als Vollbild anzeigen", - "grayscaleTooltip": "Graustufen umstellen", - "imageManipulationTooltip": "Bild-Manipulation", - "imagesFor": "Bilder für", - "imageView": "Einzelbild", - "invertTooltip": "Farben umkehren", - "item": "Objekt", - "items": "Objekte", - "less": "weniger", - "license": "Lizenz", - "links": "Links", - "load": "Laden", - "logo": "Logo", - "manifest": "IIIF-Manifest", - "metadataTooltip": "Informationen/Metadaten über dieses Objekt anzeigen", - "mirrorTooltip": "Bild spiegeln", - "more": "mehr", - "newObject": "Neues Objekt", - "no": "Nein", - "noIndex": "Kein Inhaltsverzeichnis verfügbar", - "noLabel": "Kein Label", - "objectMetadata": "Metadaten des Objekts", - "opacityLabel": "Deckkraft", - "pinTooltip": "Stecknadel", - "pointerTooltip": "Auswählen", - "polygonTooltip": "Polygon", - "rectangleTooltip": "Rechteck", - "related": "Verwandte Resourcen", - "resetTooltip": "Bild zurücksetzen", - "rights": "Rechte", - "rightsStatus": "Rechtsstatus", - "rotateLeftTooltip": "Um 90° nach links drehen", - "rotateRightTooltip": "Um 90° nach rechts drehen", - "saturationTooltip": "Sättigung anpassen", - "save": "Speichern", - "scrollView": "Horizontales Scrollen", - "searchLabelSelect": "Suchdienst auswählen", - "searchNotAvailable": "Kein Suchdienst verfügbar", - "searchText": "Suchtext", - "seeAlso": "Siehe auch", - "selectGrid": "Anordnung auswählen", - "sidePanelTooltip": "Seitenleiste", - "solid": "Durchgängig", - "submit": "Senden", - "tabTitleIndex": "Index", - "tabTitleLayers": "Ebenen", - "tabTitleSearch": "Suche", - "thick": "Dick", - "thickest": "Dicker", - "thumbnailsView": "Galerie", - "unspecified": "nicht spezifiziert", - "url": "URL", - "viewTypeTooltip": "Ansichtstyp wechseln", - "visibleLabel": "sichtbar", - "within": "Teil von", - "yes": "Ja" -} diff --git a/locales/en/translation.json b/locales/en/translation.json deleted file mode 100644 index 6813c5c2f122af37e3c2233c9032f9411a546340..0000000000000000000000000000000000000000 --- a/locales/en/translation.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "addItem": "Add Item", - "addNewObject": "Add new object from URL", - "addSlotAbove": "Add Slot Above", - "addSlotBelow": "Add Slot Below", - "addSlotLeft": "Add Slot Left", - "addSlotRight": "Add Slot Right", - "addTagsHere": "Add tags here", - "annotationTooltip": "Toggle annotations", - "attribution": "Attribution", - "bookmark": "Bookmark", - "bookmarkTitle": "Bookmark or Share Your Workspace", - "bookmarkTooltip": "Bookmark this Mirador instance", - "bookView": "Book View", - "borderColorTooltip": "Choose border color", - "borderTypeTooltip": "Choose border style", - "brightnessTooltip": "Adjust brightness", - "cancel": "Cancel", - "cancelAnnotation": "Do you want to cancel this annotation?", - "changeLayout": "Change Layout", - "changeLayoutTooltip": "Change the number of visible slots", - "close": "Close", - "closeTooltip": "Close this window", - "comments": "Comments", - "contrastTooltip": "Adjust contrast", - "dashed": "Dashes", - "delete": "Delete", - "deleteAnnotation": "Do you want to delete this annotation and all associated shapes?", - "deleteShape": "Do you want to delete this shape?", - "description": "Description", - "details": "Details", - "disabledLayersTabMessage": "Image layers are only available in single-page view", - "disabledOpacityMessage": "disabled", - "dotDashed": "Dots & Dashes", - "dropToLoad": "Drop to Load Manifest", - "edit": "Edit", - "editModalBtnDeleteAnnotation": "Delete this annotation", - "editModalBtnSaveWithoutShapes": "Save annotation without shapes", - "editModalSaveAnnotationWithNoShapesMsg": "There are no shapes associated with this annotation.", - "ellipseTooltip": "Oval annotation", - "emptyTemplateMessage": "There are no image layers on this canvas", - "fillColorTooltip": "Choose fill color", - "filterObjects": "Filter objects", - "freehandTooltip": "Freeform annotation", - "fullScreen": "Full Screen", - "fullScreenTooltip": "Toggle full screen", - "fullScreenWindowTooltip": "Toggle this window to full screen", - "grayscaleTooltip": "Toggle grayscale", - "imageManipulationTooltip": "Toggle image manipulation", - "imagesFor": "Images for", - "imageView": "Image View", - "invertTooltip": "Invert colors", - "item": "item", - "items": "items", - "label": "Label", - "less": "less", - "license": "License", - "links": "Links", - "load": "Load", - "logo": "Logo", - "manifest": "IIIF Manifest", - "metadataTooltip": "View information/metadata about this object", - "mirrorTooltip": "Mirror image", - "more": "more", - "myManifests": "My Manifests", - "newObject": "Replace Object", - "no": "No", - "noIndex": "No index available", - "noLabel": "No Label", - "objectMetadata": "Object Metadata", - "opacityLabel": "opacity", - "pinTooltip": "Pin annotation", - "pointerTooltip": "Pointer", - "polygonTooltip": "Polygon annotation", - "preloadedManifests": "Preloaded Manifests", - "rectangleTooltip": "Rectangle annotation", - "related": "Related", - "resetTooltip": "Reset image", - "rights": "Rights", - "rightsStatus": "Rights Status", - "rotateLeftTooltip": "Rotate 90° left", - "rotateRightTooltip": "Rotate 90° right", - "saturationTooltip": "Adjust saturation", - "save": "Save", - "scrollView": "Scroll View", - "searchLabelSelect": "Select Search Service", - "searchNotAvailable": "No search service available", - "searchText": "Search text", - "seeAlso": "See Also", - "selectGrid": "Select a grid below", - "sidePanelTooltip": "Toggle the side panel", - "solid": "Solid", - "submit": "Submit", - "tabTitleIndex": "Index", - "tabTitleLayers": "Layers", - "tabTitleSearch": "Search", - "thick": "Thick", - "thickest": "Thickest", - "thumbnailsView": "Gallery View", - "unspecified": "Unspecified", - "url": "URL", - "viewTypeTooltip": "Change view type", - "visibleLabel": "visible", - "within": "Within", - "yes": "Yes" -} diff --git a/locales/es/translation.json b/locales/es/translation.json deleted file mode 100644 index 6450b44d53640f6cb3930d81162b56217fff4a87..0000000000000000000000000000000000000000 --- a/locales/es/translation.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "addItem": "Añadir artículo", - "addNewObject": "Añadir nuevo objeto de URL", - "addSlotAbove": "Añadir sobre ranura", - "addSlotBelow": "Añadir debajo ranura", - "addSlotLeft": "Añadir izquierda ranura", - "addSlotRight": "Añadir derecho ranura", - "addTagsHere": "Añada etiquetas aquí", - "annotationTooltip": "Alternar anotaciones", - "attribution": "Atribución", - "bookView": "Vista del Libro", - "bookmark": "Añadir a la lista de marcadores", - "bookmarkTitle": "Añadir a la lista de marcadores o compartir su espacio de trabajo", - "bookmarkTooltip": "Añada esta instancia al Mirador", - "borderColorTooltip": "Elija el color del borde", - "borderTypeTooltip": "Elija estilo del borde", - "brightnessTooltip": "Ajustar el brillo", - "cancel": "Cancelar", - "cancelAnnotation": "¿Desea cancelar esta anotación?", - "changeLayout": "Cambiar diseño", - "changeLayoutTooltip": "Cambiar el número de ranuras visibles", - "close": "Cerrar", - "closeTooltip": "Cerrar esta ventana", - "comments": "Comentarios", - "contrastTooltip": "Ajuste el contraste", - "dashed": "Guiones", - "delete": "Eliminar", - "deleteAnnotation": "¿Desea eliminar esta anotación y todas las formas asociadas?", - "deleteShape": "¿Quieres eliminar esta forma?", - "description": "Descripción", - "details": "Detalles", - "dotDashed": "Puntos & Guiones", - "dropToLoad": "Soltar aquí para añadir el objeto", - "edit": "Editar", - "editModalBtnDeleteAnnotation": "Eliminar esta anotación", - "editModalBtnSaveWithoutShapes": "Guardar anotación sin formas", - "editModalSaveAnnotationWithNoShapesMsg": "No hay formas asociadas con esta anotación.", - "ellipseTooltip": "Anotación oval", - "fillColorTooltip": "Elija el color de relleno", - "filterObjects": "Filtrar objetos", - "freehandTooltip": "Anotación de forma libre", - "fullScreen": "Pantalla completa", - "fullScreenTooltip": "Alternar pantalla completa", - "fullScreenWindowTooltip": "Cambiar esta ventana a pantalla completa", - "grayscaleTooltip": "Cambiar a escala de grises", - "imageManipulationTooltip": "Alternar la manipulación de imágenes", - "imageView": "Vista de la Imagen", - "invertTooltip": "Invertir Colores", - "item": "artículo", - "items": "artículos", - "label": "Etiqueta", - "license": "Licencia", - "links": "Enlaces", - "load": "Cargar", - "logo": "Logo", - "metadataTooltip": "Ver información/metadatos sobre este objeto", - "mirrorTooltip": "Espejo de la Imagen", - "more": "más", - "newObject": "Nuevo Objeto", - "noIndex": "No hay ningún índice disponible", - "objectMetadata": "Metadatos", - "pinTooltip": "Anotación de pin", - "pointerTooltip": "Puntero", - "polygonTooltip": "Anotación de polígono", - "rectangleTooltip": "Anotación rectangular", - "related": "Relacionado", - "resetTooltip": "Restablecer imagen", - "rights": "Derechos", - "rightsStatus": "Estado de los Derechos", - "rotateLeftTooltip": "Girar 90° izquierda", - "rotateRightTooltip": "Girar 90° derecha", - "saturationTooltip": "Ajustar la saturación", - "save": "Salvar", - "scrollView": "Vista del rollo de papel", - "seeAlso": "Ver también", - "selectGrid": "Elija una cuadrícula de abajo", - "sidePanelTooltip": "Alternar el panel lateral", - "solid": "Sólido", - "thick": "Grueso", - "thickest": "Más grueso", - "thumbnailsView": "Miniaturas", - "unspecified": "Sin Especificar", - "viewTypeTooltip": "Cambiar tipo de vista", - "within": "Dentro de", - "yes": "Sí" -} diff --git a/locales/fr/translation.json b/locales/fr/translation.json deleted file mode 100644 index 8374e45ec50e9a496abf59cafd8e0c023acdb0e3..0000000000000000000000000000000000000000 --- a/locales/fr/translation.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "addItem": "Ajouter un objet", - "addNewObject": "Ajouter un objet à partir de son URL", - "addSlotAbove": "Ajouter une fenêtre au-dessus", - "addSlotBelow": "Ajouter une fenêtre en dessous", - "addSlotLeft": "Ajouter une fenêtre à gauche", - "addSlotRight": "Ajouter une fenêtre à droite", - "addTagsHere": "Ajouter des mots-clés", - "annotationTooltip": "Annoter / Voir les annotations", - "attribution": "Attribution", - "bookmark": "Sauvegarder / Partager", - "bookmarkTitle": "Sauvegarder ou partager cet espace de travail Mirador", - "bookmarkTooltip": "Obtenir le lien vers cet espace de travail Mirador", - "bookView": "Vue livre", - "borderColorTooltip": "Choisir la couleur de bordure", - "borderTypeTooltip": "Choisir le style de bordure", - "brightnessTooltip": "Luminosité", - "cancel": "Annuler", - "cancelAnnotation": "Voulez-vous supprimer cette annotation", - "changeLayout": "Changer la disposition", - "changeLayoutTooltip": "Choisir le nombre de fenêtres visibles", - "close": "Fermer", - "closeTooltip": "Fermer cette fenêtre", - "comments": "Commentaires", - "contrastTooltip": "Contraste", - "dashed":"Tirets", - "delete": "Supprimer", - "deleteAnnotation": "Voulez-vous supprimer cette annotation et toutes les formes associées", - "deleteShape":"Voulez-vous supprimer cette forme", - "description": "Description", - "details": "Détails", - "disabledLayersTabMessage": "Les calques d'image ne sont accessibles que depuis la vue image", - "disabledOpacityMessage": "désactivé", - "dotDashed":"Pointillés et traits", - "dropToLoad": "Déposer ici pour ajouter l'objet", - "edit": "Editer", - "editModalBtnDeleteAnnotation":"Supprimer cette annotation", - "editModalBtnSaveWithoutShapes":"Enregistrer l'annotation sans aucune forme associée ?", - "editModalSaveAnnotationWithNoShapesMsg":"Aucune forme n'est associée à cette annotation.", - "ellipseTooltip": "Ovale", - "emptyTemplateMessage": "Il n'y a pas de calques d'image sur ce canevas", - "fillColorTooltip": "Choisir une couleur de remplissage", - "filterObjects": "Filtrer la liste", - "freehandTooltip": "Tracé libre", - "fullScreen": "Plein écran", - "fullScreenTooltip": "Ouvrir en plein écran", - "fullScreenWindowTooltip": "Ouvrir cette fenêtre en plein écran", - "grayscaleTooltip": "Niveaux de gris", - "imageManipulationTooltip": "Modifier les réglages de l'image", - "imagesFor": "Images pour", - "imageView": "Vue image", - "invertTooltip": "Couleurs inversées", - "item": "objet", - "items": "objets", - "label": "Libellé", - "license": "Licence", - "links": "Liens", - "load": "Ajouter", - "logo": "Logo", - "manifest": "Manifest IIIF", - "metadataTooltip": "Afficher les informations/métadonnées", - "mirrorTooltip": "Retourner l'image (axe horizontal)", - "more": "restants", - "myManifests": "Mes objets", - "newObject": "Nouvel objet", - "no": "Non", - "noIndex": "Aucun index disponible", - "objectMetadata": "Métadonnées", - "opacityLabel": "opacité", - "pinTooltip": "Marqueur", - "pointerTooltip": "Pointeur", - "polygonTooltip": "Polygone", - "preloadedManifests": "Objets disponibles", - "rectangleTooltip": "Rectangle", - "related": "Ressources liées", - "resetTooltip": "Réinitialiser", - "rights": "Droits", - "rightsStatus": "Statut des droits", - "rotateLeftTooltip": "Rotation antihoraire 90°", - "rotateRightTooltip": "Rotation horaire 90°", - "saturationTooltip": "Saturation", - "save": "Enregistrer", - "scrollView": "Défilement horizontal", - "searchLabelSelect": "Choisir le service", - "searchNotAvailable": "Aucun service de recherche disponible", - "searchText": "Rechercher", - "seeAlso": "Voir aussi", - "selectGrid": "Sélectionner la grille de votre choix", - "sidePanelTooltip": "Ouvrir le panneau latéral", - "solid":"Ligne continue", - "tabTitleIndex": "Index", - "tabTitleLayers": "Calques", - "tabTitleSearch": "Rechercher", - "thick": "Epais", - "thickest": "Plus épais", - "thumbnailsView": "Mosaïque", - "unspecified": "Non spécifié", - "url": "URL", - "viewTypeTooltip": "Changer le type de vue", - "visibleLabel": "visible", - "within": "Fait partie de", - "yes": "Oui" -} diff --git a/locales/ga/translation.json b/locales/ga/translation.json deleted file mode 100644 index dce0d8bb39fd7b6b05799880870af9c458ccad5e..0000000000000000000000000000000000000000 --- a/locales/ga/translation.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "addItem": "Cuir mír leis", - "addNewObject": "Cuir ábhar ó URL", - "addSlotAbove": "Cuir Sliotán Thuas", - "addSlotBelow": "Cuir Sliotán Thíos", - "addSlotLeft": "Cuir Sliotán ar chlé", - "addSlotRight": "Cuir sliotán ar dheis", - "addTagsHere": "Cuir clibeanna anseo", - "annotationTooltip": "Malartaigh nótaí", - "attribution": "Admháil", - "bookmark": "Leabharmharc", - "bookmarkTitle": "Leabharmharcáil nó Roinn do Spás Oibre", - "bookmarkTooltip": "Leabharmharcáil an cás Mirador seo", - "bookView": "Amharc ar an leabhar", - "borderColorTooltip": "Roghnaigh dath imlíne don nodaireacht", - "borderTypeTooltip": "Roghnaigh stíl imlíne", - "brightnessTooltip": "Oiriúnaigh gile", - "cancel": "Cealaigh", - "cancelAnnotation": "An mian leat an nóta seo a chealú?", - "changeLayout": "Athraigh an Leagan Amach", - "changeLayoutTooltip": "Athraigh líon na sliotán atá le feiceáil", - "cite": "Luaigh", - "close": "Dún", - "closeTooltip": "Dún an fhuinneog seo", - "comments": "Nótaí tráchta", - "contrastTooltip": "Oiriúnaigh codarsnacht", - "crop": "Gearr amach", - "croptool": "Cuir eagar ar an íomhá", - "croptoolTooltip": "Gabh an íomhá de réir de shonraíocht féin", - "editImage": "Athraigh méid an íomhá", - "dashed": "Daiseanna", - "delete": "Scrios", - "deleteAnnotation": "An mian leat an nodaireacht seo agus pé cruth a bhaineann leis a scrios?", - "deleteShape": "An mian leat an cruth seo a scrios?", - "description": "Cur síos", - "details": "Sonraí", - "dotDashed": "Poncanna; daiseanna", - "dropToLoad": "Buail isteach lastliosta", - "edit": "Cuir in eagar", - "editModalBtnDeleteAnnotation": "Scrios an nodaireacht seo", - "editModalBtnSaveWithoutShapes": "Sábháil nodaireacht gan cruthanna", - "editModalSaveAnnotationWithNoShapesMsg": "N bhaineann cruth ar bith leis an nodaireacht seo", - "ellipseTooltip": "Nodaireacht ubhchruthach", - "fillColorTooltip": "Roghnaigh dath líonta don nodaireacht", - "filterObjects": "Scag ábhair", - "freehandTooltip": "Nodaireacht shaorfhoirme", - "fullScreen": "Lánscáileán", - "fullScreenTooltip": "Malartaigh lánscáileán", - "fullScreenWindowTooltip": "Malartaigh an fhuinneog seo go lánscáileán", - "grayscaleTooltip": "Scoránaigh an liathscála", - "help": "Cabhair", - "imageCapture": "Gabháil íomhá", - "imageManipulationTooltip": "Malartaigh láimhsiú íomhá ", - "imageView": "Amharc Íomhánna", - "invertTooltip": "Aisiompaigh na dathanna", - "item": "mír ", - "items": "míreanna", - "label": "Lipéad", - "language": "Teanga", - "license": "Ceadúnas", - "links": "Naisc", - "load": "Lódáil", - "logo": "Lógó", - "map": "Amharc ar chomhthéacs geografach", - "metadataTooltip": "Amharc ar eolas/meiteashonraí i leith an ábhar seo", - "more": "Tuilleadh", - "newObject": "Ábhar Nua", - "no": "Ní hea", - "noIndex": "Níl fáil ar innéacs", - "objectMetadata": "Meiteashonraí an ábhair", - "pinTooltip": "Nodaireacht bhioráin", - "pointerTooltip": "Pointeoir", - "polygonTooltip": "Nodaireacht pholagáin", - "rectangleTooltip": "Nodaireacht dronuilleoige", - "related": "Gaolmhar", - "resetTooltip": "Athshocraigh gach rialtán", - "rights": "Cearta", - "rightsStatus": "Stádas cirt", - "rotateLeftTooltip": "Cas 90céim; ar chlé", - "rotateRightTooltip": "Cas 90céim; ar dheis", - "saturationTooltip": "Coigeartaigh an sáithiú", - "save": "Sábháil", - "scrollView": "Amharc Scrollaithe", - "seeAlso": "Féach freisin", - "selectGrid": "Roghnaigh greille thíos", - "sidePanelTooltip": "malartaigh an painéal taoibh", - "solid": "dlúthlíne", - "thick": "tiúlíne", - "thickest": "líne is tiubha", - "thumbnailsView": "Amharc ar an gailearaí", - "transcribe": "Scríobh amach an mhír seo", - "unspecified": "Neamhshonraithe", - "url": "URL", - "viewTypeTooltip": "Athraigh amhairc", - "within": "Laistigh de", - "yes": "Tá" -} diff --git a/locales/ja/translation.json b/locales/ja/translation.json deleted file mode 100644 index 88125308aef6938b750759d8734c20e91b34780a..0000000000000000000000000000000000000000 --- a/locales/ja/translation.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "addItem": "アイテム追加", - "addNewObject": "URLで新規オブジェクト追加", - "addSlotAbove": "上にスロット追加", - "addSlotBelow": "下にスロット追加", - "addSlotLeft": "左にスロット追加", - "addSlotRight": "右にスロット追加", - "addTagsHere": "ここでタグを追加", - "annotationTooltip": "アノテーション", - "attribution": "帰属", - "bookmark": "ブックマーク", - "bookmarkTitle": "現在の表示内容をブックマーク", - "bookmarkTooltip": "このインスタンスをブックマーク", - "bookView": "Book表示モード", - "borderColorTooltip": "線の色を選択", - "borderTypeTooltip": "線のスタイルを選択", - "brightnessTooltip": "明度調整", - "cancel": "キャンセル", - "cancelAnnotation": "この注釈を取消したいですか?", - "changeLayout": "レイアウト変更", - "changeLayoutTooltip": "スロット数の変更", - "close": "閉じる", - "closeTooltip": "このウインドウを閉じる", - "comments": "コメント", - "contrastTooltip": "コントラスト調整", - "dashed":"破線", - "delete": "削除", - "deleteAnnotation": "この注釈と関連するすべての図形を削除したいですか?", - "deleteShape":"この図形を削除したいですか?", - "details": "詳細", - "dotDashed":"一点鎖線", - "dropToLoad": "ドロップしてマニフェストを読み込み", - "edit": "編集", - "editModalBtnDeleteAnnotation":"この注釈を削除", - "editModalBtnSaveWithoutShapes":"図形なしで注釈を保存", - "editModalSaveAnnotationWithNoShapesMsg":"この注釈に関連する図形はありません。", - "ellipseTooltip": "楕円形で注釈", - "fillColorTooltip": "塗り潰し色を選択", - "filterObjects": "フィルタをかける対象", - "freehandTooltip": "フリーハンドで注釈", - "fullScreen": "全画面表示", - "fullScreenTooltip": "フルスクリーン表示", - "fullScreenWindowTooltip": "このウインドウをフルスクリーン表示", - "grayscaleTooltip": "グレースケール", - "imageManipulationTooltip": "画像操作", - "imageView": "画像表示モード", - "invertTooltip": "色反転", - "item": "アイテム", - "items": "アイテム", - "license": "利用許諾条件(ライセンス)", - "links": "リンク", - "load": "読み込み", - "logo": "ロゴ", - "metadataTooltip": "この資料の情報を表示", - "more": "さらに", - "newObject": "新しいオブジェクト", - "no": "いいえ", - "objectMetadata": "オブジェクトのメタデータ", - "pinTooltip": "ピンポイントで注釈", - "pointerTooltip": "ポインター", - "polygonTooltip": "多角形で注釈", - "rectangleTooltip": "矩形で注釈", - "related": "関連リソース", - "resetTooltip": "設定をリセット", - "rights": "権利関係", - "rightsStatus": "権利状態", - "rotateLeftTooltip": "90度左回転", - "rotateRightTooltip": "90度右回転", - "saturationTooltip": "彩度調整", - "save": "保存", - "scrollView": "スクロール表示モード", - "seeAlso": "機械可読形式の解説", - "selectGrid": "以下のグリッドから選択", - "sidePanelTooltip": "サイドパネルを表示", - "solid":"実線", - "thumbnailsView": "ギャラリー表示モード", - "unspecified": "未特定の", - "url": "URL", - "viewTypeTooltip": "表示モード切替え", - "within": "このリソースを含むリソース", - "yes": "はい" -} diff --git a/locales/ko/translation.json b/locales/ko/translation.json deleted file mode 100644 index 7a0b5d7d5b4f87f8dacf95f3e34ad200bf6b26dd..0000000000000000000000000000000000000000 --- a/locales/ko/translation.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "addItem": "아이템 추가", - "addNewObject": "URL 사용 오브젝트 추가", - "addSlotAbove": "슬롯 추가 - 위", - "addSlotBelow": "슬롯 추가 - 아래", - "addSlotLeft": "슬롯 추가 - 왼쪽", - "addSlotRight": "슬롯 추가 - 오른쪽", - "addTagsHere": "태그 추가", - "annotationTooltip": "주석 모드 전환", - "attribution": "저작자 정보", - "bookmark": "북마크", - "bookmarkTitle": "작업공간 공유/북마크", - "bookmarkTooltip": "북마크 하기", - "bookView": "책으로 보기", - "borderColorTooltip": "경계 색 선택", - "borderTypeTooltip": "경계 스타일", - "brightnessTooltip": "명도 변환", - "cancel": "취소", - "cancelAnnotation": "이 주석을 취소하시겠습니까?", - "changeLayout": "레이아웃 변경", - "changeLayoutTooltip": "슬롯 개수 변경", - "close": "닫기", - "closeTooltip": "창 닫기", - "comments": "코멘트", - "contrastTooltip": "대비 조절", - "dashed": "파선", - "delete": "지우기", - "deleteAnnotation": "이 주석과 그에 관련된 도형들을 삭제하시겠습니까?", - "deleteShape":"이 도형을 삭제하시겠습니까?", - "details": "세부 정보", - "dotDashed":"쇄선", - "dropToLoad": "매니페스트를 여기 놓으세요.", - "edit": "편집", - "editModalBtnDeleteAnnotation":"주석 삭제", - "editModalBtnSaveWithoutShapes":"도형 없이 주석 저장하기", - "editModalSaveAnnotationWithNoShapesMsg":"이 주석과 관련된 도형이 없습니다.", - "ellipseTooltip": "타원형", - "fillColorTooltip": "면색", - "filterObjects": "오브젝트 필터", - "freehandTooltip": "프리핸드", - "fullScreen": "전체화면", - "fullScreenTooltip": "전체화면 전환", - "fullScreenWindowTooltip": "이 창을 전체화면으로", - "grayscaleTooltip": "그레이스케일 전환", - "imageManipulationTooltip": "이미지 변환", - "imageView": "이미지로 보기", - "invertTooltip": "색상 반전", - "item": "아이템", - "items": "아이템", - "license": "라이선스", - "links": "고리", - "load": "불러오기", - "logo": "로고", - "metadataTooltip": "메타데이터", - "more": "더 보기", - "newObject": "새 오브젝트", - "no": "아니요", - "noIndex": "인덱스가 없습니다", - "objectMetadata": "오브젝트 메타데이터", - "pinTooltip": "핀", - "pointerTooltip": "포인터", - "polygonTooltip": "다각형", - "rectangleTooltip": "직사각형", - "related": "관련고리", - "resetTooltip": "이미지 리셋", - "rights": "저작권 정보", - "rightsStatus": "저작권 상황", - "rotateLeftTooltip": "90도 좌회전", - "rotateRightTooltip": "90도 우회전", - "saturationTooltip": "채도 변환", - "save": "저장", - "scrollView": "스크롤로 보기", - "seeAlso": "같이 보기", - "selectGrid": "격자 선택하기", - "sidePanelTooltip": "사이드 패널 전환", - "solid":"실선", - "thumbnailsView": "썸네일로 보기", - "unspecified": "불특정", - "url": "URL", - "viewTypeTooltip": "뷰 타입 전환", - "within": "상위 컬렉션", - "yes": "네" -} diff --git a/locales/nl/translation.json b/locales/nl/translation.json deleted file mode 100644 index a43d39f503db44131471e97dc664b05e96b13a56..0000000000000000000000000000000000000000 --- a/locales/nl/translation.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "addItem": "Voeg item toe", - "changeLayout": "Pas layout aan", - "selectGrid": "Kies een grid hieronder", - "bookmark": "Favoriet", - "close": "Sluiten", - "bookmarkTitle": "Favoriet of deel uw werkset", - "filterObjects": "Filter objecten", - "addNewObject": "Voeg nieuw object toe via URL", - "more": "meer", - "item": "item", - "items": "items", - "details": "Details", - "rights": "Copyright", - "rightsStatus": "Copyright Status", - "unspecified": "Niet gespecifieerd", - "links": "Links", - "addSlotRight": "Voeg Slot toe rechts", - "addSlotLeft": "Voeg Slot toe links", - "addSlotAbove": "Voeg Slot toe bovenaan", - "addSlotBelow": "Voeg Slot toe onderaan", - "imageView": "Beeld presentatie", - "bookView": "Boek presentatie", - "scrollView": "Scroll view", - "thumbnailsView": "Bekijk thumbnail", - "comments": "Commentaar", - "addTagsHere": "Voeg hier tags toe", - "save": "Opslaan", - "cancel": "Annuleren", - "edit": "Bewerken", - "delete": "Verwijderen", - "url": "URL", - "newObject": "Nieuw Object", - "objectMetadata": "Object Metadata", - "fullScreen": "Volledig scherm", - "logo": "Logo", - "load": "Laad", - "dropToLoad": "Drop hier om the laden" -} diff --git a/locales/zh-CN/translation.json b/locales/zh-CN/translation.json deleted file mode 100644 index 5140fed775472a5c3f369d7526355175f2cdc25e..0000000000000000000000000000000000000000 --- a/locales/zh-CN/translation.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "addItem": "添加项", - "addNewObject": "从 URL 建立新的物件", - "addSlotAbove": "添加插槽(上)", - "addSlotBelow": "添加插槽(下)", - "addSlotLeft": "添加插槽(左)", - "addSlotRight": "添加插槽(右)", - "addTagsHere": "添加标签", - "bookmark": "添加书签", - "bookmarkTitle": "为当前工作区创建书签", - "bookmarkTooltip": "为当前进程创建书签", - "bookView": "书本视图", - "borderColorTooltip": "选择边框颜色", - "borderTypeTooltip": "选择边框样式", - "brightnessTooltip": "调整亮度", - "cancel": "取消", - "cancelAnnotation": "你想取消这个注释吗?", - "changeLayout": "更改布局", - "changeLayoutTooltip": "更改可见插槽的数量", - "close": "关闭", - "closeTooltip": "关闭这个窗口", - "comments": "评论", - "contrastTooltip": "调整对比度", - "dashed": "虚线", - "delete": "删除", - "deleteAnnotation": "你想删除这个注释和所有相关的形状吗?", - "deleteShape": "你想删除这个形状吗?", - "details": "详细资料", - "dotDashed": "点和虚线", - "dropToLoad": "拖放以装载清单", - "edit": "编辑", - "editModalBtnDeleteAnnotation": "删除这个注释", - "editModalBtnSaveWithoutShapes": "存储注释但忽略形状", - "editModalSaveAnnotationWithNoShapesMsg": "这个注释没有相关的形状。", - "ellipseTooltip": "椭圆形注释", - "fillColorTooltip": "选择填充颜色", - "filterObjects": "过滤物件", - "freehandTooltip": "自由注释", - "fullScreen": "全屏", - "fullScreenTooltip": "进入/退出全屏", - "fullScreenWindowTooltip": "进入/退出全屏", - "grayscaleTooltip": "灰度", - "imageView": "图像视图", - "invertTooltip": "反色", - "item": "项目", - "items": "项目", - "links": "链接", - "load": "载入", - "logo": "徽标", - "metadataTooltip": "查看这个物件的信息/元数据", - "more": "更多", - "myManifests": "我的物件", - "newObject": "建立新的物件", - "no": "否", - "objectMetadata": "物件元数据", - "pinTooltip": "点注释", - "polygonTooltip": "多边形注释", - "preloadedManifests": "预設的物件", - "rectangleTooltip": "长方形注释", - "resetTooltip": "重置图像", - "rights": "版权", - "rightsStatus": "版权状态", - "rotateLeftTooltip": "顺时针旋转 90 度", - "rotateRightTooltip": "逆时针旋转 90 度", - "saturationTooltip": "调整色彩饱和度", - "save": "保存", - "scrollView": "滚动视图", - "selectGrid": "选中下方单元格", - "sidePanelTooltip": "打开/关闭侧边栏", - "solid": "实线", - "thumbnailsView": "图库视图", - "unspecified": "未指定的", - "url": "URL", - "viewTypeTooltip": "更改视图", - "yes": "是" -} diff --git a/locales/zh-TW/translation.json b/locales/zh-TW/translation.json deleted file mode 100644 index dedb23bd3c9bb7650a6493ac30d5bd971f4afa1b..0000000000000000000000000000000000000000 --- a/locales/zh-TW/translation.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "addItem": "添加項", - "addNewObject": "從 URL 建立新的物件", - "addSlotAbove": "添加插槽(上)", - "addSlotBelow": "添加插槽(下)", - "addSlotLeft": "添加插槽(左)", - "addSlotRight": "添加插槽(右)", - "addTagsHere": "添加標簽", - "bookmark": "添加書簽", - "bookmarkTitle": "為當前工作區創建書簽", - "bookmarkTooltip": "為當前進程創建書簽", - "bookView": "書本視圖", - "borderColorTooltip": "選擇邊框顏色", - "borderTypeTooltip": "選擇邊框樣式", - "brightnessTooltip": "調整亮度", - "cancel": "取消", - "cancelAnnotation": "你想取消這個注釋嗎?", - "changeLayout": "改變布局", - "changeLayoutTooltip": "更改可見插槽的數量", - "close": "關閉", - "closeTooltip": "關閉這個窗口", - "comments": "評論", - "contrastTooltip": "調整對比度", - "dashed": "虛線", - "delete": "刪除", - "deleteAnnotation": "你想刪除這個注釋和所有相關的形狀嗎?", - "deleteShape": "你想刪除這個形狀嗎?", - "details": "詳細資料", - "dotDashed": "點和虛線", - "dropToLoad": "拖放以裝載清單", - "edit": "編輯", - "editModalBtnDeleteAnnotation": "刪除這個注釋", - "editModalBtnSaveWithoutShapes": "存儲注釋但忽略形狀", - "editModalSaveAnnotationWithNoShapesMsg": "這個注釋沒有相關的形狀。", - "ellipseTooltip": "橢圓形注釋", - "fillColorTooltip": "選擇填充顏色", - "filterObjects": "過濾物件", - "freehandTooltip": "自由注釋", - "fullScreen": "全屏", - "fullScreenTooltip": "進入/退出全屏", - "fullScreenWindowTooltip": "進入/退出全屏", - "grayscaleTooltip": "灰度", - "imageView": "圖像視圖", - "invertTooltip": "反色", - "item": "項目", - "items": "項目", - "links": "鏈接", - "load": "載入", - "logo": "徽標", - "metadataTooltip": "查看這個物件的信息/元數據", - "more": "更多", - "myManifests": "我的物件", - "newObject": "建立新的物件", - "no": "否", - "objectMetadata": "物件元數據", - "pinTooltip": "點注釋", - "polygonTooltip": "多邊形注釋", - "preloadedManifests": "預設的物件", - "rectangleTooltip": "長方形注釋", - "resetTooltip": "重置圖像", - "rights": "版權", - "rightsStatus": "版權狀態", - "rotateLeftTooltip": "順時針旋轉 90 度", - "rotateRightTooltip": "逆時針旋轉 90 度", - "saturationTooltip": "調整色彩飽和度", - "save": "保存", - "scrollView": "滾動視圖", - "selectGrid": "選中下方單元格", - "sidePanelTooltip": "打開/關閉側邊欄", - "solid": "實線", - "thumbnailsView": "圖庫視圖", - "unspecified": "未指定的", - "url": "URL", - "viewTypeTooltip": "更改視圖", - "yes": "是" -} diff --git a/locales/zh/translation.json b/locales/zh/translation.json deleted file mode 100644 index 58896cbba56b9cbbbc8472b4082b5ed4d5df4f14..0000000000000000000000000000000000000000 --- a/locales/zh/translation.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "addItem": "添加项", - "addNewObject": "从 URL 建立新的物件", - "addSlotAbove": "添加插槽(上)", - "addSlotBelow": "添加插槽(下)", - "addSlotLeft": "添加插槽(左)", - "addSlotRight": "添加插槽(右)", - "addTagsHere": "添加标签", - "bookmark": "添加书签", - "bookmarkTitle": "为当前工作区创建书签", - "bookmarkTooltip": "为当前进程创建书签", - "bookView": "书本视图", - "borderColorTooltip": "选择边框颜色", - "borderTypeTooltip": "选择边框样式", - "brightnessTooltip": "调整亮度", - "cancel": "取消", - "cancelAnnotation": "你想取消这个注释吗?", - "changeLayout": "更改布局", - "changeLayoutTooltip": "更改可见插槽的数量", - "close": "关闭", - "closeTooltip": "关闭这个窗口", - "comments": "评论", - "contrastTooltip": "调整对比度", - "dashed": "虚线", - "delete": "删除", - "deleteAnnotation": "你想删除这个注释和所有相关的形状吗?", - "deleteShape": "你想删除这个形状吗?", - "details": "详细资料", - "dotDashed": "点和虚线", - "dropToLoad": "拖放以装载清单", - "edit": "编辑", - "editModalBtnDeleteAnnotation": "删除这个注释", - "editModalBtnSaveWithoutShapes": "存储注释但忽略形状", - "editModalSaveAnnotationWithNoShapesMsg": "这个注释没有相关的形状。", - "ellipseTooltip": "椭圆形注释", - "fillColorTooltip": "选择填充颜色", - "filterObjects": "过滤物件", - "freehandTooltip": "自由注释", - "fullScreen": "全屏", - "fullScreenTooltip": "进入/退出全屏", - "fullScreenWindowTooltip": "进入/退出全屏", - "grayscaleTooltip": "灰度", - "imageView": "图像视图", - "invertTooltip": "反色", - "item": "项目", - "items": "项目", - "links": "链接", - "load": "载入", - "logo": "徽标", - "metadataTooltip": "查看这个物件的信息/元数据", - "more": "更多", - "newObject": "建立新的物件", - "no": "否", - "objectMetadata": "物件元数据", - "pinTooltip": "点注释", - "polygonTooltip": "多边形注释", - "rectangleTooltip": "长方形注释", - "resetTooltip": "重置图像", - "rights": "版权", - "rightsStatus": "版权状态", - "rotateLeftTooltip": "顺时针旋转 90 度", - "rotateRightTooltip": "逆时针旋转 90 度", - "saturationTooltip": "调整色彩饱和度", - "save": "保存", - "scrollView": "滚动视图", - "selectGrid": "选中下方单元格", - "sidePanelTooltip": "打开/关闭侧边栏", - "solid": "实线", - "thumbnailsView": "图库视图", - "unspecified": "未指定的", - "url": "URL", - "viewTypeTooltip": "更改视图", - "yes": "是" -} diff --git a/package.json b/package.json index 929e59f379186b063ad0154ffd4e202f75cb2461..255066f6dbe593c0782533ffd7e00212908216e1 100644 --- a/package.json +++ b/package.json @@ -1,90 +1,73 @@ { - "name": "mirador", - "version": "2.6.1", - "description": "Multi-window image viewer, a web-based tool to support researcher goals", - "files": ["dist/*"], - "repository": { - "type": "git", - "url": "https://github.com/ProjectMirador/mirador" - }, - "license": "Apache-2.0", - "devDependencies": { - "eslint": "^3.17.1", - "eslint-config-airbnb-base": "^11.1.1", - "eslint-plugin-import": "^2.2.0", - "gitbook": "3.2.0", - "gitbook-cli": "2.3.0", - "gitbook-plugin-search": "2.2.1", - "grunt": ">=0.4.5 <1.0.0", - "grunt-cli": "*", - "grunt-contrib-clean": "*", - "grunt-contrib-compress": "*", - "grunt-contrib-concat": "*", - "grunt-contrib-connect": "*", - "grunt-contrib-copy": "*", - "grunt-contrib-cssmin": "*", - "grunt-contrib-jasmine": "^1.2.0", - "grunt-contrib-jshint": "*", - "grunt-contrib-less": "^1.4.0", - "grunt-contrib-uglify": "*", - "grunt-contrib-watch": "*", - "grunt-css-selectors": "^1.3.0", - "grunt-git-describe": "*", - "grunt-githooks": "^0.3.1", - "grunt-template-jasmine-istanbul": "^0.3.3", - "gruntify-eslint": "^3.1.0", - "jasmine-core": "^2.1.3", - "jasmine-jquery": "^2.0.5", - "jstree": "^3.3.4", - "karma": "^1.5", - "karma-chrome-launcher": "^0.1.7", - "karma-coverage": "^0.2.7", - "karma-coveralls": "^1.1.2", - "karma-firefox-launcher": "^0.1.3", - "karma-jasmine": "^0.3.5", - "karma-json-fixtures-preprocessor": "0.0.6", - "karma-phantomjs-launcher": "^1.0", - "karma-safari-launcher": "^0.1.1", - "karma-sauce-launcher": "^0.2.10", - "karma-spec-reporter": "^0.0.16", - "sinon": "^1.17.6" - }, + "name": "minimal_redux_poc", + "version": "1.0.0", + "description": "", + "main": "index.js", "scripts": { - "start": "./node_modules/.bin/grunt serve", - "test": "./node_modules/.bin/karma start ./karma.conf.js", - "travis": "./node_modules/.bin/grunt ci --verbose --force & npm run test", - "update_demo": "./bin/update_demo.sh", - "release": "./bin/create_release.sh", - "lint": "./node_modules/.bin/eslint js/src" + "lint": "node_modules/.bin/eslint ./", + "server": "node_modules/.bin/http-server", + "test": "npm run build && npm run lint && jest -c jest.json", + "test:coverage": "jest -c jest.json --coverage", + "test:watch": "jest -c jest.json --watch", + "build": "webpack --mode=production", + "build:dev": "webpack --mode=development", + "build:watch": "webpack --watch --mode=development", + "start": "npm run build:dev && concurrently \"npm run build:watch\" \"npm run server -- -p 4444\"" }, + "license": "Apache-2.0", + "contributors": [ + "Drew Winget <scipioaffricanus@gmail.com> (https://aeschylus.net/)", + "Jack Reed <phillipjreed@gmail.com> (https://www.jack-reed.com)" + ], + "repository": "https://github.com/ProjectMirador/research-and-demos/tree/master/minimal_redux_poc", "dependencies": { - "bootbox": "^4.4.0", - "bootstrap": "^3.3.7", - "d3": "^3.5.17", - "font-awesome": "^4.7.0", - "handlebars": "^4.0.11", - "i18next": "^4.2.0", - "i18next-browser-languagedetector": "^1.0.1", - "i18next-xhr-backend": "^1.3.0", - "iiif-evented-canvas": "^0.0.3-beta", - "iiif-layout-functions": "0.0.2-alpha", - "javascript-state-machine": "^2.3.4", - "jquery": "^3.1.1", - "jquery-migrate": "^3.0.0", - "jquery-plugin": "git+https://github.com/cowboy/jquery-tiny-pubsub.git", - "jquery-ui-dist": "^1.12.1", - "jquery.scrollto": "^1.4.12", - "material-design-icons": "^3.0.1", - "mousetrap": "^1.4.6", - "openseadragon": "^2.2.1", - "paper": "^0.10.2", - "qtip2": "^3.0.3", - "sanitize-html": "practicefusion/sanitize-html#include-dist-files", - "select2": "^4.0.3", - "simple-pagination.js": "^1.6.0", - "spectrum-colorpicker": "^1.8.0", - "tinymce": "^4.1.7", - "urijs": "^1.16.1" + "css-ns": "^1.2.2", + "deepmerge": "^3.0.0", + "manifesto.js": "^3.0.9", + "node-fetch": "2.1.1", + "node-sass": "^4.9.2", + "openseadragon": "^2.4.0", + "prop-types": "^15.6.2", + "react": "^16.4.0", + "react-dom": "^16.4.0", + "react-redux": "^5.0.7", + "redux": "3.7.2", + "redux-devtools-extension": "^2.13.2", + "redux-thunk": "2.2.0", + "sass-loader": "^7.1.0" }, - "engine": "node < 7.0.0" + "devDependencies": { + "@babel/core": "^7.2.0", + "@babel/preset-env": "^7.2.0", + "@babel/preset-react": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "babel-eslint": "9.0.0", + "babel-jest": "^23.6.0", + "babel-loader": "^8.0.4", + "babel-plugin-named-asset-import": "^0.2.3", + "concurrently": "^4.0.1", + "css-loader": "^1.0.0", + "enzyme": "^3.4.4", + "enzyme-adapter-react-16": "^1.2.0", + "eslint": "^5.10.0", + "eslint-config-airbnb": "^17.1.0", + "eslint-config-react-app": "^3.0.5", + "eslint-loader": "^2.1.1", + "eslint-plugin-flowtype": "^3.2.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-jest": "^22.1.2", + "eslint-plugin-jsx-a11y": "^6.1.2", + "eslint-plugin-react": "^7.11.1", + "http-server": "^0.11.1", + "jest": "^22.4.4", + "jest-fetch-mock": "^1.5.0", + "jest-puppeteer": "^3.0.1", + "puppeteer": "^1.4.0", + "react-dev-utils": "^6.1.1", + "redux-mock-store": "^1.5.1", + "style-loader": "^0.22.1", + "terser-webpack-plugin": "^1.2.1", + "webpack": "^4.27.1", + "webpack-cli": "^3.1.2" + } } diff --git a/setupJest.js b/setupJest.js new file mode 100644 index 0000000000000000000000000000000000000000..d5399cbfdb67ee85a39a98a555cb8c2275f5d535 --- /dev/null +++ b/setupJest.js @@ -0,0 +1,21 @@ +// Setup Jest to mock fetch + +import { JSDOM } from 'jsdom'; // eslint-disable-line import/no-extraneous-dependencies +import fetch from 'jest-fetch-mock'; // eslint-disable-line import/no-extraneous-dependencies +import Enzyme from 'enzyme'; // eslint-disable-line import/no-extraneous-dependencies +import Adapter from 'enzyme-adapter-react-16'; // eslint-disable-line import/no-extraneous-dependencies + +const jsdom = new JSDOM('<!doctype html><html><body><div id="main"></div></body></html>'); +const { window } = jsdom; + +window.HTMLCanvasElement.prototype.getContext = () => {}; +jest.setMock('node-fetch', fetch); +global.fetch = require('jest-fetch-mock'); // eslint-disable-line import/no-extraneous-dependencies + +global.window = window; +global.document = window.document; +global.navigator = { + userAgent: 'node.js', +}; + +Enzyme.configure({ adapter: new Adapter() }); diff --git a/spec/annotations/annotation-utils.stub.js b/spec/annotations/annotation-utils.stub.js deleted file mode 100644 index c14f9cbe13b686ee6afd9b98fefa21e798b557d7..0000000000000000000000000000000000000000 --- a/spec/annotations/annotation-utils.stub.js +++ /dev/null @@ -1,59 +0,0 @@ -(function () { - - window.MockItem = function () { - - }; - - MockItem.prototype = { - getItem: jasmine.createSpy().and.callFake(function() { return this; }), - translateByXY: jasmine.createSpy(), - translateByPoint: jasmine.createSpy(), - click: jasmine.createSpy(), - setOnMouseDownListener: jasmine.createSpy(), - onMouseDown: jasmine.createSpy(), - resize:jasmine.createSpy(), - remove: jasmine.createSpy(), - rotate: jasmine.createSpy(), - getWidth: jasmine.createSpy(), - getHeight: jasmine.createSpy(), - setSize: jasmine.createSpy(), - addData: jasmine.createSpy(), - getData: function (key) { - if (key === 'pivot') { - return { - add: jasmine.createSpy() - }; - } - }, - getMask:function () { - return this; - }, - setPosition: jasmine.createSpy() - }; - - window.MockGroup = function(paperScope,children){ - this.children = children; - }; - - MockGroup.prototype = Object.create(MockItem.prototype,{}); - MockGroup.prototype.rotate = function(angle,pivot){ - for(var child = 0;child < this.children.length; child++){ - this.children[child].rotate(angle,pivot); - } - }; - MockGroup.prototype.remove = jasmine.createSpy(); - - - window.AnnotationUtilsStub = function(){ - - }; - - AnnotationUtilsStub.prototype = { - Icon: MockItem, - PointText:MockItem, - RotationIcon:MockItem, - DeleteActionIcon:MockItem, - Group: MockGroup - }; - -})(); \ No newline at end of file diff --git a/spec/annotations/annotation-utils.test.js b/spec/annotations/annotation-utils.test.js deleted file mode 100644 index c9b2d79d66678fe940008ac53baa6f21077c1cc1..0000000000000000000000000000000000000000 --- a/spec/annotations/annotation-utils.test.js +++ /dev/null @@ -1,134 +0,0 @@ -describe('Annotation utils', function () { - describe('Icons classes', function () { - var paperScope = { - view:{ - zoom:1 - }, - Size:function(){ - - }, - Raster: function () { - this.position = new position(0, 0); - this.data = {}; - this.remove = jasmine.createSpy(); - this.rotate = jasmine.createSpy(); - this.width = 0; - this.height = 0; - }, - PointText: function () { - this.position = new position(0, 0); - this.data = {}; - this.remove = jasmine.createSpy(); - this.rotate = jasmine.createSpy(); - this.width = 0; - this.height = 0; - } - }; - - var position = function (x, y) { - this.x = x; - this.y = y; - this.add = function (point) { - return new position(this.x + point.x, this.y + point.y); - }; - }; - - describe('Icon', function () { - - beforeEach(function () { - this.icon = new Mirador.AnnotationUtils().Icon; - this.icon = new this.icon(paperScope, {name: ''}); - }); - - it('should translate icon by point', function () { - this.icon.translateByPoint({x: 1, y: 1}); - expect(this.icon.item.position.x).toBe(1); - expect(this.icon.item.position.y).toBe(1); - - }); - - it('should translate icon by x and y as params', function () { - this.icon.translateByXY(1, 1); - expect(this.icon.item.position.x).toBe(1); - expect(this.icon.item.position.y).toBe(1); - - }); - - it('should set/call onMouseDown listener', function () { - var spy = jasmine.createSpy(); - this.icon.setOnMouseDownListener(spy); - this.icon.onMouseDown(); - expect(spy.calls.count()).toBe(1); - }); - - it('should add data to the raster', function () { - this.icon.addData('key', 'value'); - expect(this.icon.item.data.key).toBe('value'); - }); - - it('should rotate icon', function () { - this.icon.rotate(); - expect(this.icon.item.rotate.calls.count()).toBe(1); - }); - - it('should remove icon', function () { - this.icon.remove(); - expect(this.icon.item.remove.calls.count()).toBe(1); - }); - - it('should get the width and height', function () { - expect(this.icon.getWidth()).toBe(0); - expect(this.icon.getHeight()).toBe(0); - }); - - }); - - - describe('DeleteActionIcon', function () { - beforeEach(function () { - this.icon = new Mirador.AnnotationUtils().DeleteActionIcon; - this.icon = new this.icon(paperScope,{name:''}); - }); - - it('should use defined trashcan icon', function () { - expect(this.icon.content).toBe('\uf014'); - }); - - it('should fire delete shape event onMouseDown',function(){ - var overlay = { - eventEmitter:{ - publish:jasmine.createSpy() - } - }; - - this.icon.setOnMouseDownListener(overlay); - this.icon.mouseDown(); - expect(overlay.eventEmitter.publish).toHaveBeenCalled(); - }); - - }); - - describe('RotationIcon', function () { - beforeEach(function () { - this.icon = new Mirador.AnnotationUtils().RotationIcon; - this.icon = new this.icon(paperScope,{name:''}); - }); - - it('should use defined rotate icon', function () { - expect(this.icon.content).toBe('\uf01e'); - }); - - it('should set overlay mode to rotate onMouseDown',function(){ - var overlay = { - mode:'' - }; - - this.icon.setOnMouseDownListener(overlay); - this.icon.mouseDown(); - expect(overlay.mode).toBe('rotate'); - }); - - }); - - }); -}); \ No newline at end of file diff --git a/spec/annotations/annotationTooltip.test.js b/spec/annotations/annotationTooltip.test.js deleted file mode 100644 index 125c080d6d50820953c41cdcb08bfd9b5da1d730..0000000000000000000000000000000000000000 --- a/spec/annotations/annotationTooltip.test.js +++ /dev/null @@ -1,56 +0,0 @@ -describe('AnnotationTooltip', function() { - - beforeEach(function() { - - }); - - afterEach(function() { - - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('showEditor', function() { - - }); - - xdescribe('initializeViewerUpgradableToEditor', function() { - - }); - - xdescribe('removeAllEvents', function() { - - }); - - xdescribe('addViewerEvents', function() { - - }); - - xdescribe('addEditorEvents', function() { - - }); - - xdescribe('showViewer', function() { - - }); - - xdescribe('setTooltipContent', function() { - - }); - - xdescribe('getViewerContent', function() { - - }); - - xdescribe('freezeQtip', function() { - - }); - - xdescribe('unFreezeQtip', function() { - - }); -}); diff --git a/spec/annotations/catchEndpoint.test.js b/spec/annotations/catchEndpoint.test.js deleted file mode 100644 index 6809a559de5018afbc535da6c64af86ed13d32c2..0000000000000000000000000000000000000000 --- a/spec/annotations/catchEndpoint.test.js +++ /dev/null @@ -1,279 +0,0 @@ -// TODO: Please fix CatchEndpoints's getAnnotationEndpoint as you see fit. -// An older version of this test used to work in 2.1.3. -// Please also verify the shims in the initial beforeEach() for appropriateness. -xdescribe('CatchEndpoint', function() { - var subject, ajaxSuccess, ajaxData, annotation; - - beforeEach(function() { - this.token = 'token'; - this.prefix = 'http://catch.myexample.net'; - this.dfd = jQuery.Deferred(); - this.annotationsList = []; - this.windowID = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.eventEmitter = new Mirador.EventEmitter; - this.catchEndpoint = new Mirador.CatchEndpoint({ - token: this.token, - prefix: this.prefix, - dfd: this.dfd, - annotationsList: this.annotationsList, - windowID: this.windowID, - eventEmitter: this.eventEmitter, - }); - subject = this.catchEndpoint; - ajaxSuccess = true; - ajaxData = null; - spyOn(jQuery, 'ajax').and.callFake(function(args) { - if (ajaxSuccess) { - if (typeof args.success === 'function') args.success(ajaxData); - } - else { - if (typeof args.error === 'function') args.error(ajaxData); - } - }); - annotation = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting", "oa:tagging" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>Cell</p>" - }, - { - "@type": "oa:Tag", - "chars": "Example" - }, - ], - "on": { - "@type": "oa:SpecificResource", - "full": "http://wellcomelibrary.org/iiif/b18035723/canvas/c4", - "selector": { - "@type": "oa:Choice", - "default": { - "@type": "oa:FragmentSelector", - "value": "xywh=1000,219,198,148" - }, - "item": { - "@type": "oa:SvgSelector", - "value": "<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"defaultStrokeValue":1,"editStrokeValue":5,"currentStrokeValue":5,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>" - } - } - }, - "@id": "51ac4477-7bcc-475d-a7bb-26112db1c230" - }; - // Shims for PhantomJS 2.1.1: Please evaluate - // Shim for missing implementation of Array.prototype.forEach in PhantomJS 2.1.1 - if (typeof annotation.on.forEach === 'undefined') { - annotation.on.forEach = function(f) { - var _this = this; - jQuery.each(_this, function(k, v) { - f(v, k, _this); - }); - } - } - // Shim for _this.imagesList references in catchEndpoint - subject.imagesList = [{}]; - spyOn(Mirador, 'getImageIndexById').and.returnValue(0); - spyOn(Mirador, 'getThumbnailForCanvas').and.returnValue('http://www.example.org/iiif/0123456/full/full/0/default.jpg'); - }); - - afterEach(function() { - delete this.catchEndpoint; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); // Force beforeEach setup to run - }); - }); - - describe('set', function() { - it('should set the property to the value with 2 arguments', function() { - subject.set('waahoo', 'xekko'); - expect(subject.waahoo).toEqual('xekko'); - }); - it('should set the sub-property to the value with 3 arguments', function() { - subject.set(0, 'xekko', { parent: 'annotationsList' }); - expect(subject.annotationsList[0]).toEqual('xekko'); - }) - }); - - describe('search', function() { - var successCallback, errorCallback; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - subject.annotationsList = []; - spyOn(subject, 'getAnnotationInOA').and.callFake(function(val) { - return "oa:" + val; - }); - ajaxData = { - rows: ['a','b','c'] - }; - }); - it('should run callback on success if provided', function() { - subject.search({}, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(ajaxData); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should update internal annotation list if provided', function() { - expect(subject.dfd.state()).not.toEqual('resolved'); - spyOn(subject.eventEmitter, 'publish'); - subject.search({}); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(subject.dfd.state()).toEqual('resolved'); - expect(subject.annotationsList).toEqual(['oa:a', 'oa:b', 'oa:c']); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('catchAnnotationsLoaded.'+this.windowID, subject.annotationsListCatch); - - }); - it('should add console log on failure with no callback given', function() { - ajaxSuccess = false; - spyOn(console, 'log'); - subject.search({}); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(console.log).toHaveBeenCalledWith("There was an error searching this endpoint"); - }); - it('should run callback on failure if provided', function() { - ajaxSuccess = false; - subject.search({}, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('deleteAnnotation', function() { - var successCallback, errorCallback; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - }); - it('should run callback and fire event on success', function() { - spyOn(subject.eventEmitter, 'publish'); - subject.deleteAnnotation('123', successCallback, errorCallback); - expect(successCallback).toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('catchAnnotationDeleted.'+this.windowID, '123'); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.deleteAnnotation('ABC', successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('update', function() { - var successCallback, errorCallback; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - }); - it('should run callback and fire event on success', function() { - spyOn(subject.eventEmitter, 'publish'); - subject.update(annotation, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('catchAnnotationUpdated.'+this.windowID, jasmine.any(Object)); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.update(annotation, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('create', function() { - var successCallback, errorCallback; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - }); - it('should run callback and fire event on success', function() { - spyOn(subject.eventEmitter, 'publish'); - ajaxData = jQuery.extend(true, { - id: '1234567890' - }, subject.getAnnotationInEndpoint(annotation)); - subject.create(annotation, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(jasmine.any(Object)); - expect(errorCallback).not.toHaveBeenCalled(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('catchAnnotationCreated.'+this.windowID, jasmine.any(Object)); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.create(annotation, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('userAuthorize', function() { - var catchAnnotation; - beforeEach(function() { - catchAnnotation = subject.getAnnotationInEndpoint(annotation); - }); - describe('Instructor', function() { - beforeEach(function() { - subject.roles = ['Instructor']; - }); - it('should have full access', function() { - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(true); - }); - }); - describe('Administrator', function() { - beforeEach(function() { - subject.roles = ['Administrator']; - }); - it('should have full access', function() { - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(true); - }); - }); - describe('Regular users', function() { - beforeEach(function() { - subject.userid = 'student1'; - }); - it('should be allowed access to permission-free annotations', function() { - delete catchAnnotation.permissions; - delete catchAnnotation.user; - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(true); - }); - it('should be allowed access to actions not explicitly set (e.g. read)', function() { - catchAnnotation.permissions.read = []; - expect(subject.userAuthorize('read', catchAnnotation)).toBe(true); - }); - it('should be allowed access to annotations where the user is whitelisted', function() { - catchAnnotation.permissions.admin = ['student2', subject.userid]; - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(true); - }); - it('should be denied access to annotations where the user is not whitelisted', function() { - catchAnnotation.permissions.admin = ['student2']; - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(false); - }); - it('should be allowed access to own annotations', function() { - delete catchAnnotation.permissions; - catchAnnotation.user.userid = subject.userid; - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(true); - }); - it('should be denied access to annotations owned by others', function() { - delete catchAnnotation.permissions; - catchAnnotation.user.userid = 'student2'; - expect(subject.userAuthorize('admin', catchAnnotation)).toBe(false); - }); - }); - }); - - xdescribe('getAnnotationInOA', function() { - - }); - - describe('getAnnotationInEndpoint', function() { - it('should convert the example in this test properly', function() { - expect(subject.getAnnotationInEndpoint(annotation)).not.toBeUndefined(); - }); - }); -}); diff --git a/spec/annotations/dummy-tool.stub.js b/spec/annotations/dummy-tool.stub.js deleted file mode 100644 index a42eb6d7f000b079be457b58b2e7440fdb9bc224..0000000000000000000000000000000000000000 --- a/spec/annotations/dummy-tool.stub.js +++ /dev/null @@ -1,40 +0,0 @@ -(function () { - window.DummyTool = { - createShape: function (initialPoint, overlay) { - overlay.mode = 'create'; - var pixel = 1 / overlay.paperScope.view.zoom; - var segments = this._createSegments(initialPoint,pixel,overlay); - var shape = new overlay.paperScope.Path({ - segments: segments, - fullySelected: true, - name: overlay.getName(this) - }); - shape.dashArray = overlay.dashArray; - shape.strokeWidth = 1 / overlay.paperScope.view.zoom; - shape.strokeColor = overlay.strokeColor; - shape.fillColor = overlay.fillColor; - shape.fillColor.alpha = overlay.fillColorAlpha; - shape.closed = true; - shape.data.rotation = 0; - overlay.segment = shape.segments[5]; - this.updateSelection(true, shape, overlay); - return shape; - }, - updateSelection: function (selected, item, overlay) { - if (item._name.toString().indexOf(this.idPrefix) != -1) { - - if(item._name.toString().indexOf(this.partOfPrefix)!=-1){ - return; - } - - item.selected = selected; - if (selected) { - item.segments[1].handleOut = new overlay.paperScope.Point(0, 32 / overlay.paperScope.view.zoom); - item.segments[1].handleOut = item.segments[1].handleOut.rotate(item.data.rotation, item.segments[1]); - var point = item.segments[1].point.clone(); - point = point.add(item.segments[1].handleOut); - } - } - } - } -})(); \ No newline at end of file diff --git a/spec/annotations/endpoint.test.js b/spec/annotations/endpoint.test.js deleted file mode 100644 index c8111c54cf1e9b00906adc5bab81ab4e176e5efa..0000000000000000000000000000000000000000 --- a/spec/annotations/endpoint.test.js +++ /dev/null @@ -1,44 +0,0 @@ -describe('Endpoint', function() { - - beforeEach(function() { - - }); - - afterEach(function() { - - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('search', function() { - - }); - - xdescribe('deleteAnnotation', function() { - - }); - - xdescribe('update', function() { - - }); - - xdescribe('create', function() { - - }); - - xdescribe('set', function() { - - }); - - xdescribe('getAnnotationInOA', function() { - - }); - - xdescribe('getAnnotationInEndpoint', function() { - - }); -}); diff --git a/spec/annotations/legacyOpenAnnotationStrategy.test.js b/spec/annotations/legacyOpenAnnotationStrategy.test.js deleted file mode 100644 index 2f4cacb5c30f4f6778a18b9900b8e135adb75626..0000000000000000000000000000000000000000 --- a/spec/annotations/legacyOpenAnnotationStrategy.test.js +++ /dev/null @@ -1,94 +0,0 @@ -describe('Legacy OA Strategy', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - subject = new Mirador.LegacyOpenAnnotationStrategy(); - this.legacyOa = getJSONFixture('annotationLegacyOa.json'); - this.miradorLegacyOa = getJSONFixture('annotationMiradorLegacy.json'); - this.mirador21Oa = getJSONFixture('annotationMirador21.json'); - this.miradorDualOa = getJSONFixture('annotationMiradorDual.json'); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); - }); - }); - - describe('isThisType', function() { - it('should recognize a legacy OA annotation', function() { - expect(subject.isThisType(this.legacyOa)).toBe(true); - }); - it('should not recognize a Mirador 2.0.x OA annotation', function() { - expect(subject.isThisType(this.miradorLegacyOa)).toBe(false); - }); - it('should not recognize a Mirador 2.1.x OA annotation', function() { - expect(subject.isThisType(this.mirador21Oa)).toBe(false); - }); - it('should not recognize a dual-selector OA annotation', function() { - expect(subject.isThisType(this.miradorDualOa)).toBe(false); - }); - }); - - describe('buildAnnotation', function() { - var annotation, window, overlay; - - beforeEach(function() { - // Generate mocks - annotation = { - "@id": "http://iiif.ultrawaahoo.net/annotations/27", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://iiif.ultrawaahoo.net/annotations/27", - "@type": "cnt:ContentAsText", - "format": "text/plain", - "chars": "This is a legacy annotation." - } - }; - window = { canvasID: "http://iiif.ultrawaahoo.net/canvases/3927" }; - overlay = { draftPaths: [{bounds: { x: 154, y: 304, width: 3507, height: 164 }}] }; - }); - - it('should build the on attribute in the annotation', function() { - expect(subject.buildAnnotation({ - "annotation": annotation, - "window": window, - "overlay": overlay - })).toEqual(this.legacyOa); - }); - }); - - describe('parseRegion', function() { - var result, osdRegionDrawTool; - - beforeEach(function() { - osdRegionDrawTool = { - parseRectangle: jasmine.createSpy('parseRectangle').and.returnValue({ - bounds: { x: 2218, y: 3217, width: 371, height: 78 } - }) - } - }); - it ('should parse the rectangle for a legacy OA annotation', function() { - result = subject.parseRegion(this.legacyOa, osdRegionDrawTool); - expect(result).not.toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.0.x OA annotation', function() { - result = subject.parseRegion(this.miradorLegacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.1.x OA annotation', function() { - result = subject.parseRegion(this.mirador21Oa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - it('should do nothing for a dual-selector OA annotation', function() { - result = subject.parseRegion(this.miradorDualOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - }); -}); \ No newline at end of file diff --git a/spec/annotations/localStorageEndpoint.js b/spec/annotations/localStorageEndpoint.js deleted file mode 100644 index 7299aa2bba9db57a8cb09f5612023223f009a905..0000000000000000000000000000000000000000 --- a/spec/annotations/localStorageEndpoint.js +++ /dev/null @@ -1,212 +0,0 @@ -describe('LocalStorageEndpoint', function() { - var subject, bogusStorage; - - - beforeEach(function() { - bogusStorage = {}; - spyOn(localStorage, 'setItem').and.callFake(function(k, v) { - bogusStorage[k] = v; - }); - spyOn(localStorage, 'getItem').and.callFake(function(k) { - return bogusStorage[k]; - }); - this.token = 'token'; - this.prefix = 'BM-'; - this.dfd = jQuery.Deferred(); - this.windowID = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.eventEmitter = new Mirador.EventEmitter; - this.annotationsList = []; - this.localStorageEndpoint = new Mirador.LocalStorageEndpoint({ - token: this.token, - prefix: this.prefix, - dfd: this.dfd, - windowID: this.windowID, - eventEmitter: this.eventEmitter, - annotationsList: this.annotationsList - }); - subject = this.localStorageEndpoint; - }); - - afterEach(function() { - delete this.localStorageEndpoint; - }); - - describe('Initialization', function() { - it('should initialize with defaults', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - }); - }); - - describe('set', function() { - it('should set the property to the value with 2 arguments', function() { - subject.set('waahoo', 'xekko'); - expect(subject.waahoo).toEqual('xekko'); - }); - it('should set the sub-property to the value with 3 arguments', function() { - subject.set(0, 'xekko', { parent: 'annotationsList' }); - expect(subject.annotationsList[0]).toEqual('xekko'); - }) - }); - - describe('search', function() { - var successCallback, errorCallback, dummyList; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - dummyList = [ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }}, - {'@id':'B', "on": { full: 'http://0.0.0.0/B' }} - ]; - }); - it('should resolve the DFD when successful without a callback', function() { - spyOn(subject, 'getAnnotationList').and.returnValue(dummyList); - expect(subject.dfd.state()).not.toEqual('resolved'); - subject.search({uri: "ABC"}); - expect(subject.dfd.state()).toEqual('resolved'); - }); - it('should run the success callback when successful', function() { - spyOn(subject, 'getAnnotationList').and.returnValue(dummyList); - subject.search({uri: "ABC"}, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(dummyList); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should show a console message when unsuccessful without a callback', function() { - spyOn(console, 'log'); - spyOn(subject, 'getAnnotationList').and.throwError('fail'); - subject.search({uri: "ABC"}); - expect(console.log).toHaveBeenCalledWith('There was an error searching this endpoint'); - }); - it('should run the error callback when unsuccessful', function() { - spyOn(subject, 'getAnnotationList').and.throwError('fail'); - subject.search({uri: "ABC"}, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('deleteAnnotation', function() { - var successCallback, errorCallback; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - subject.annotationsList = [ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }}, - {'@id':'B', "on": { full: 'http://0.0.0.0/B' }} - ]; - }); - it('should update the virtual annotations list when successful without a callback', function() { - subject.deleteAnnotation('B'); - expect(subject.annotationsList.length).toEqual(1); - expect(subject.annotationsList[0]).toEqual(jasmine.objectContaining({'@id':'A', "on": { full: 'http://0.0.0.0/A' }})); - }); - it('should run the success callback when successful', function() { - subject.deleteAnnotation('B', successCallback, errorCallback); - expect(successCallback).toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should run the error callback when unsuccessful', function() { - spyOn(jQuery, 'grep').and.throwError('fail'); - subject.deleteAnnotation('B', successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('update', function() { - var successCallback, errorCallback, updated; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - updated = {'@id':'A', edited: true, "on": { full: 'http://0.0.0.0/A' }}; - subject.annotationsList = [ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }}, - {'@id':'B', "on": { full: 'http://0.0.0.0/B' }} - ]; - }); - it('should grab the new annotations list if the current one is empty', function() { - subject.annotationsList = []; - spyOn(subject, 'getAnnotationList').and.returnValue([ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }}, - {'@id':'B', "on": { full: 'http://0.0.0.0/B' }} - ]); - subject.update(updated); - expect(subject.annotationsList.length).toEqual(2); - expect(subject.annotationsList[0]).toEqual(jasmine.objectContaining({'@id':'A', edited: true, "on": { full: 'http://0.0.0.0/A' }})); - }); - it('should resolve the virtual annotations list when successful without a callback', function() { - subject.update(updated); - expect(subject.annotationsList.length).toEqual(2); - expect(subject.annotationsList[0]).toEqual(jasmine.objectContaining({'@id':'A', edited: true, "on": { full: 'http://0.0.0.0/A' }})); - }); - it('should run the success callback when successful', function() { - subject.update(updated, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(jasmine.objectContaining(updated)); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should run the error callback when unsuccessful', function() { - spyOn(JSON, 'stringify').and.throwError('fail'); - subject.update(updated, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('create', function() { - var successCallback, errorCallback, new_anno, created; - beforeEach(function() { - spyOn(Mirador, 'genUUID').and.returnValue('ultra-waahoo'); - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - new_anno = { "on": { full: 'http://0.0.0.0/B' }}; - created = { '@id': 'ultra-waahoo', "on": { full: 'http://0.0.0.0/B' }}; - subject.annotationsList = [ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }} - ]; - }); - it('should grab the new annotations list if the current one is empty', function() { - subject.annotationsList = []; - spyOn(subject, 'getAnnotationList').and.returnValue([ - {'@id':'A', "on": { full: 'http://0.0.0.0/A' }} - ]); - subject.create(new_anno); - expect(subject.annotationsList.length).toEqual(2); - expect(subject.annotationsList[1]).toEqual(jasmine.objectContaining(created)); - }); - it('should resolve the virtual annotations list when successful without a callback', function() { - subject.create(new_anno); - expect(subject.annotationsList.length).toEqual(2); - expect(subject.annotationsList[1]).toEqual(jasmine.objectContaining(created)); - }); - it('should run the success callback when successful', function() { - subject.create(new_anno, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(jasmine.objectContaining(created)); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should run the error callback when unsuccessful', function() { - spyOn(JSON, 'stringify').and.throwError('fail'); - subject.create(new_anno, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('getAnnotationList', function() { - it('should start empty if no existing data is found', function() { - expect(subject.getAnnotationList('brand_new')).toEqual([]); - }); - it('should parse the existing data if found', function() { - localStorage.setItem('my_annotations', '[{"data":"junk"}]'); - expect(subject.getAnnotationList('my_annotations')).toEqual([{data:"junk"}]); - }); - }); - - describe('userAuthorize', function() { - it('should let everyone through for now', function() { - expect(subject.userAuthorize('read', {})).toBe(true); - expect(subject.userAuthorize('create', {})).toBe(true); - expect(subject.userAuthorize('update', {})).toBe(true); - expect(subject.userAuthorize('delete', {})).toBe(true); - expect(subject.userAuthorize('admin', {})).toBe(true); - }); - }); -}); diff --git a/spec/annotations/mirador21Strategy.test.js b/spec/annotations/mirador21Strategy.test.js deleted file mode 100644 index 881cc3224d606ead51557978f816a5598609bfa0..0000000000000000000000000000000000000000 --- a/spec/annotations/mirador21Strategy.test.js +++ /dev/null @@ -1,106 +0,0 @@ -describe('Mirador 2.1.x Annotation Strategy', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - subject = new Mirador.Mirador21Strategy(); - this.legacyOa = getJSONFixture('annotationLegacyOa.json'); - this.miradorLegacyOa = getJSONFixture('annotationMiradorLegacy.json'); - this.mirador21Oa = getJSONFixture('annotationMirador21.json'); - this.miradorDualOa = getJSONFixture('annotationMiradorDual.json'); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); - }); - }); - - describe('isThisType', function() { - it('should not recognize a legacy OA annotation', function() { - expect(subject.isThisType(this.legacyOa)).toBe(false); - }); - it('should not recognize a Mirador 2.0.x OA annotation', function() { - expect(subject.isThisType(this.miradorLegacyOa)).toBe(false); - }); - it('should recognize a Mirador 2.1.x OA annotation', function() { - expect(subject.isThisType(this.mirador21Oa)).toBe(true); - }); - it('should not recognize a dual-selector OA annotation', function() { - expect(subject.isThisType(this.miradorDualOa)).toBe(false); - }); - }); - - describe('buildAnnotation', function() { - var annotation, window, overlay; - - beforeEach(function() { - // Generate mocks - annotation = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>something</p>" - } - ], - "@id": "d2eda2e2-951a-4f88-b4ec-03a7b25a5d07" - }; - window = { - canvasID: "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567/canvas/canvas-10466656.json", - loadedManifest: "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567" - }; - overlay = { - getSVGString: jasmine.createSpy('getSVGString').and.returnValue("<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"strokeWidth":1,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>"), - draftPaths: [{bounds: { x: 1000, y: 219, width: 198, height: 148 }}] - }; - }); - - it('should build the on attribute in the annotation', function() { - expect(subject.buildAnnotation({ - "annotation": annotation, - "window": window, - "overlay": overlay - })).toEqual(this.mirador21Oa); - }); - }); - - describe('parseRegion', function() { - var result, osdRegionDrawTool; - - beforeEach(function() { - osdRegionDrawTool = { - svgOverlay: { - parseSVG: jasmine.createSpy('parseSVG').and.returnValue({ - bounds: { x: 1000, y: 219, width: 198, height: 148 } - }) - } - } - }); - it ('should do nothing for a legacy OA annotation', function() { - result = subject.parseRegion(this.legacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.0.x OA annotation', function() { - result = subject.parseRegion(this.miradorLegacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - it('should parse the SVG for a Mirador 2.1.x OA annotation', function() { - result = subject.parseRegion(this.mirador21Oa, osdRegionDrawTool); - expect(result).not.toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).toHaveBeenCalled(); - }); - it('should do nothing for a dual-selector OA annotation', function() { - result = subject.parseRegion(this.miradorDualOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/spec/annotations/miradorDualStrategy.test.js b/spec/annotations/miradorDualStrategy.test.js deleted file mode 100644 index 7d7df09265a790ab6c4a9dfe3e8c12c0334b66a9..0000000000000000000000000000000000000000 --- a/spec/annotations/miradorDualStrategy.test.js +++ /dev/null @@ -1,106 +0,0 @@ -describe('Mirador SVG-xywh Open Annotation Strategy', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - subject = new Mirador.MiradorDualStrategy(); - this.legacyOa = getJSONFixture('annotationLegacyOa.json'); - this.miradorLegacyOa = getJSONFixture('annotationMiradorLegacy.json'); - this.mirador21Oa = getJSONFixture('annotationMirador21.json'); - this.miradorDualOa = getJSONFixture('annotationMiradorDual.json'); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); - }); - }); - - describe('isThisType', function() { - it('should not recognize a legacy OA annotation', function() { - expect(subject.isThisType(this.legacyOa)).toBe(false); - }); - it('should not recognize a Mirador 2.0.x OA annotation', function() { - expect(subject.isThisType(this.miradorLegacyOa)).toBe(false); - }); - it('should not a Mirador 2.1.x OA annotation', function() { - expect(subject.isThisType(this.mirador21Oa)).toBe(false); - }); - it('should recognize a dual-selector OA annotation', function() { - expect(subject.isThisType(this.miradorDualOa)).toBe(true); - }); - }); - - describe('buildAnnotation', function() { - var annotation, window, overlay; - - beforeEach(function() { - // Generate mocks - annotation = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>something</p>" - } - ], - "@id": "d2eda2e2-951a-4f88-b4ec-03a7b25a5d07" - }; - window = { - canvasID: "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567/canvas/canvas-10466656.json", - loadedManifest: "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567" - }; - overlay = { - getSVGString: jasmine.createSpy('getSVGString').and.returnValue("<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"strokeWidth":1,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>"), - draftPaths: [{bounds: { x: 1000, y: 219, width: 198, height: 148 }}] - }; - }); - - it('should build the on attribute in the annotation', function() { - expect(subject.buildAnnotation({ - "annotation": annotation, - "window": window, - "overlay": overlay - })).toEqual(this.miradorDualOa); - }); - }); - - describe('parseRegion', function() { - var result, osdRegionDrawTool; - - beforeEach(function() { - osdRegionDrawTool = { - svgOverlay: { - parseSVG: jasmine.createSpy('parseSVG').and.returnValue({ - bounds: { x: 1000, y: 219, width: 198, height: 148 } - }) - } - } - }); - it ('should do nothing for a legacy OA annotation', function() { - result = subject.parseRegion(this.legacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.0.x OA annotation', function() { - result = subject.parseRegion(this.miradorLegacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.1.x OA annotation', function() { - result = subject.parseRegion(this.mirador21Oa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).not.toHaveBeenCalled(); - }); - it('should parse the SVG for a dual-selector OA annotation', function() { - result = subject.parseRegion(this.miradorDualOa, osdRegionDrawTool); - expect(result).not.toBe(undefined); - expect(osdRegionDrawTool.svgOverlay.parseSVG).toHaveBeenCalled(); - }); - }); -}); diff --git a/spec/annotations/miradorLegacyStrategy.test.js b/spec/annotations/miradorLegacyStrategy.test.js deleted file mode 100644 index faf679993ea9937739fbacab8d5bd6a5772214f6..0000000000000000000000000000000000000000 --- a/spec/annotations/miradorLegacyStrategy.test.js +++ /dev/null @@ -1,93 +0,0 @@ -describe('Mirador 2.0.x Legacy Annotation Strategy', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - subject = new Mirador.MiradorLegacyStrategy(); - this.legacyOa = getJSONFixture('annotationLegacyOa.json'); - this.miradorLegacyOa = getJSONFixture('annotationMiradorLegacy.json'); - this.mirador21Oa = getJSONFixture('annotationMirador21.json'); - this.miradorDualOa = getJSONFixture('annotationMiradorDual.json'); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); - }); - }); - - describe('isThisType', function() { - it('should not recognize a legacy OA annotation', function() { - expect(subject.isThisType(this.legacyOa)).toBe(false); - }); - it('should recognize a Mirador 2.0.x OA annotation', function() { - expect(subject.isThisType(this.miradorLegacyOa)).toBe(true); - }); - it('should not recognize a Mirador 2.1.x OA annotation', function() { - expect(subject.isThisType(this.mirador21Oa)).toBe(false); - }); - it('should not recognize a dual-selector OA annotation', function() { - expect(subject.isThisType(this.miradorDualOa)).toBe(false); - }); - }); - - describe('buildAnnotation', function() { - var annotation, window, overlay; - - beforeEach(function() { - // Generate mocks - annotation = { - "@context" : "http://iiif.io/api/presentation/2/context.json", - "@type" : "oa:Annotation", - "motivation" : [ "oa:commenting" ], - "resource" : [ { - "@type" : "dctypes:Text", - "format" : "text/html", - "chars" : "<p>1852-1921</p>" - } ] - }; - window = { canvasID: "http://dams.llgc.org.uk/iiif/2.0/4574752/canvas/4574755.json" }; - overlay = { draftPaths: [{bounds: { x: 2218, y: 3217, width: 371, height: 78 }}] }; - }); - - it('should build the on attribute in the annotation', function() { - expect(subject.buildAnnotation({ - "annotation": annotation, - "window": window, - "overlay": overlay - })).toEqual(this.miradorLegacyOa); - }); - }); - - describe('parseRegion', function() { - var result, osdRegionDrawTool; - - beforeEach(function() { - osdRegionDrawTool = { - parseRectangle: jasmine.createSpy('parseRectangle').and.returnValue({ - bounds: { x: 2218, y: 3217, width: 371, height: 78 } - }) - } - }); - it ('should do nothing for a legacy OA annotation', function() { - result = subject.parseRegion(this.legacyOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - it('should parse the rectangle for a Mirador 2.0.x OA annotation', function() { - result = subject.parseRegion(this.miradorLegacyOa, osdRegionDrawTool); - expect(result).not.toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).toHaveBeenCalled(); - }); - it('should do nothing for a Mirador 2.1.x OA annotation', function() { - result = subject.parseRegion(this.mirador21Oa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - it('should do nothing for a dual-selector OA annotation', function() { - result = subject.parseRegion(this.miradorDualOa, osdRegionDrawTool); - expect(result).toBe(undefined); - expect(osdRegionDrawTool.parseRectangle).not.toHaveBeenCalled(); - }); - }); -}); \ No newline at end of file diff --git a/spec/annotations/osd-region-draw-tool.test.js b/spec/annotations/osd-region-draw-tool.test.js deleted file mode 100644 index a15bc014d4e9854dd29695194f9baddb70a2d1af..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-region-draw-tool.test.js +++ /dev/null @@ -1,111 +0,0 @@ -describe('OsdRegionDrawTool', function() { - - beforeEach(function() { - }); - - afterEach(function() { - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('enterEditMode', function() { - - }); - - xdescribe('exitEditMode', function() { - - }); - - xdescribe('deleteShape', function() { - - }); - - xdescribe('saveEditedShape', function() { - - }); - - describe('render', function() { - it('should still render the other annotations when SVG parsing fails for one or more', function() { - var annotations = [{ - on: { - selector: { - '@type': 'oa:SvgSelector', - value: '<svg><path></path></sv' // invalid SVG - } - } - }]; - var drawTool = createDrawTool(annotations); - drawTool.render(); - }); - }); - - xdescribe('showTooltipsFromMousePosition', function() { - - }); - - xdescribe('bindEvents', function() { - - }); - - xdescribe('getAnnoFromRegion', function() { - - }); - - it('should unsubscibe from all events when destroying',function(){ - var drawTool = createDrawTool([]); - drawTool.destroy(); - for(var key in drawTool.eventEmitter.events){ - expect(drawTool.eventEmitter.events[key]).toBe(0); - } - expect(drawTool.osdViewer.addHandler.callCount).toBe(drawTool.osdViewer.removeHandler.callCount); - }); - - function createDrawTool(annotations) { - var windowId = 'window1'; - jQuery('document.body').append(jQuery('<div>').attr('id', windowId)); - var osdViewerElem = jQuery('<div/>'); - var mockPaperScope = { - activate: jasmine.createSpy(), - project: { - clear: jasmine.createSpy() - }, - view: { - draw: jasmine.createSpy() - } - }; - var mockSvgOverlay = function() { - return MockOverlay.getOverlay(mockPaperScope); - }; - var mockSaveController = { - currentConfig: { - annotationBodyEditor: { - module: jasmine.createSpy() - } - }, - getWindowElement: function() { - return jQuery('#' + windowId); - } - }; - var mockAnnotationsLayer = { - mode: Mirador.AnnotationsLayer.DISPLAY_ANNOTATIONS - }; - var mockOpenSeadragon = { - addHandler: jasmine.createSpy(), - svgOverlay: mockSvgOverlay, - element: osdViewerElem, - removeHandler:jasmine.createSpy() - }; - return new Mirador.OsdRegionDrawTool({ - eventEmitter: new MockEventEmitter(new Mirador.EventEmitter()), - list: annotations, - parent: mockAnnotationsLayer, - osdViewer: mockOpenSeadragon, - state: mockSaveController, - svgOverlay: mockSvgOverlay - }); - } -}); diff --git a/spec/annotations/osd-svg-ellipse.test.js b/spec/annotations/osd-svg-ellipse.test.js deleted file mode 100644 index 7ede91f5a718582a36db912fe2e7e45fa2dbf058..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-ellipse.test.js +++ /dev/null @@ -1,567 +0,0 @@ -paper.install(window); - -describe('Ellipse', function() { - var diagonalSize; - - beforeAll(function() { - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'paperId'); - jasmine.getFixtures().set(this.canvas); - paper.setup(this.canvas.attr('id')); - this.ellipse = new Mirador.Ellipse(); - diagonalSize = Math.sqrt(2); - }); - afterAll(function() { - delete this.ellipse; - }); - - it('should create ellipse shape', function() { - var initialPoint = { - 'x': 123, - 'y': 456 - }; - var overlay = MockOverlay.getOverlay(paper); - var shape = this.ellipse.createShape(initialPoint, overlay); - - expect(overlay.mode).toBe('create'); - - expect(overlay.segment).toBe(shape.segments[6]); - - expect(shape.strokeColor.red).toBe(1); - expect(shape.strokeColor.green).toBe(0); - expect(shape.strokeColor.blue).toBe(0); - - expect(shape.fillColor.red).toBe(1); - expect(shape.fillColor.green).toBe(0); - expect(shape.fillColor.blue).toBe(0); - - expect(shape.fillColor.alpha).toBe(overlay.fillColorAlpha); - - expect(shape.closed).toBe(true); - - expect(shape.data.rotation).toBe(0); - - expect(shape.name).toBe(this.ellipse.idPrefix + '1'); - - expect(shape.segments.length).toBe(10); - - expect(shape.segments[0].point.x).toBe(initialPoint.x - 2); - expect(shape.segments[0].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[1].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[1].point.y).toBe(initialPoint.y - diagonalSize - 1); - - expect(shape.segments[2].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[2].point.y).toBe(initialPoint.y - diagonalSize - 1); - - expect(shape.segments[3].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[3].point.y).toBe(initialPoint.y - diagonalSize - 1); - - expect(shape.segments[4].point.x).toBe(initialPoint.x); - expect(shape.segments[4].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[5].point.x).toBe(initialPoint.x + diagonalSize - 1); - expect(shape.segments[5].point.y).toBe(initialPoint.y - 1); - - expect(shape.segments[6].point.x).toBe(initialPoint.x); - expect(shape.segments[6].point.y).toBe(initialPoint.y); - - expect(shape.segments[7].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[7].point.y).toBe(initialPoint.y + diagonalSize - 1); - - expect(shape.segments[8].point.x).toBe(initialPoint.x - 2); - expect(shape.segments[8].point.y).toBe(initialPoint.y); - - expect(shape.segments[9].point.x).toBe(initialPoint.x - diagonalSize - 1); - expect(shape.segments[9].point.y).toBe(initialPoint.y - 1); - }); - - describe('Ellipse Mouse Tool', function() { - var overlay; - - beforeEach(function() { - overlay = MockOverlay.getOverlay(paper); - this.ellipse = new Mirador.Ellipse(); - this.initialPoint = { - 'x': 987, - 'y': 654 - }; - this.shape = this.ellipse.createShape(this.initialPoint, overlay); - }); - - afterEach(function() { - delete this.shape; - delete this.ellipse; - }); - - it('should update selection', function() { - this.ellipse.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - - this.ellipse.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - - this.shape.scale(-10); - - this.ellipse.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - - this.ellipse.updateSelection(false, this.shape, overlay); - - expect(this.shape.selected).toBe(false); - - this.shape.add(new Segment(0, 0)); - - this.ellipse.updateSelection(false, this.shape, overlay); - - expect(this.shape.segments.length).toBe(10); - }); - - it('should do nothing on mouse drag when there is no mode set', function() { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - overlay.mode = ''; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.ellipse.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should translate the whole ellipse shape', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - overlay.mode = 'translate'; - overlay.path = this.shape; - - this.ellipse.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x - event.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y - event.delta.y).toBe(this.initialPoint.y - diagonalSize - 1); - - expect(this.shape.segments[2].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y - event.delta.y).toBe(this.initialPoint.y - diagonalSize - 1); - - expect(this.shape.segments[3].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[3].point.y - event.delta.y).toBe(this.initialPoint.y - diagonalSize - 1); - - expect(this.shape.segments[4].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[5].point.x - event.delta.x).toBe(this.initialPoint.x + diagonalSize - 1); - expect(this.shape.segments[5].point.y - event.delta.y).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[6].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[6].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[7].point.y - event.delta.y).toBe(this.initialPoint.y + diagonalSize - 1); - - expect(this.shape.segments[8].point.x - event.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[9].point.x - event.delta.x).toBe(this.initialPoint.x - diagonalSize - 1); - expect(this.shape.segments[9].point.y - event.delta.y).toBe(this.initialPoint.y - 1); - }); - - it('should resize the whole ellipse shape dragging point[6]', function() { - var event = TestUtils.getEvent({ - 'x': 10, - 'y': 100 - }); - var diagonalSizeX = event.delta.x * (2 / (1 + Math.sqrt(1 / 2))); - var diagonalSizeY = event.delta.y * (2 / (1 + Math.sqrt(1 / 2))); - - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[6]; - this.ellipse.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x - diagonalSizeX * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.x - 2, 1); - expect(this.shape.segments[0].point.y - diagonalSizeY * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.y - 2, 1); - - expect(this.shape.segments[1].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[1].point.y).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[2].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[2].point.y).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[3].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[3].point.y).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[4].point.x - diagonalSizeX * ((2 + Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.x, 1); - expect(this.shape.segments[4].point.y - diagonalSizeY * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.y - 2, 1); - - expect(this.shape.segments[5].point.x - diagonalSizeX).toBeCloseTo(this.initialPoint.x + diagonalSize - 1, 1); - expect(this.shape.segments[5].point.y - diagonalSizeY / 2).toBeCloseTo(this.initialPoint.y - 1, 1); - - expect(this.shape.segments[6].point.x - event.delta.x).toBeCloseTo(this.initialPoint.x, 1); - expect(this.shape.segments[6].point.y - event.delta.y).toBeCloseTo(this.initialPoint.y, 1); - - expect(this.shape.segments[7].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[7].point.y - diagonalSizeY).toBeCloseTo(this.initialPoint.y + diagonalSize - 1, 1); - - expect(this.shape.segments[8].point.x - diagonalSizeX * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.x - 2, 1); - expect(this.shape.segments[8].point.y - diagonalSizeY * ((2 + Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.y, 1); - - expect(this.shape.segments[9].point.x).toBeCloseTo(this.initialPoint.x - diagonalSize - 1, 1); - expect(this.shape.segments[9].point.y - diagonalSizeY / 2).toBeCloseTo(this.initialPoint.y - 1, 1); - }); - - - it('should resize the whole ellipse shape dragging point[0]', function() { - var event = TestUtils.getEvent({ - 'x': 10, - 'y': 100 - }); - var diagonalSizeX = event.delta.x * (2 / (1 + Math.sqrt(1 / 2))); - var diagonalSizeY = event.delta.y * (2 / (1 + Math.sqrt(1 / 2))); - - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[0]; - this.ellipse.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x - event.delta.x).toBeCloseTo(this.initialPoint.x - 2, 1); - expect(this.shape.segments[0].point.y - event.delta.y).toBeCloseTo(this.initialPoint.y - 2, 1); - - expect(this.shape.segments[1].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[1].point.y - diagonalSizeY).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[2].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[2].point.y - diagonalSizeY).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[3].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[3].point.y - diagonalSizeY).toBeCloseTo(this.initialPoint.y - diagonalSize - 1, 1); - - expect(this.shape.segments[4].point.x - diagonalSizeX * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.x, 1); - expect(this.shape.segments[4].point.y - event.delta.y).toBeCloseTo(this.initialPoint.y - 2, 1); - - expect(this.shape.segments[5].point.x).toBeCloseTo(this.initialPoint.x + diagonalSize - 1, 1); - expect(this.shape.segments[5].point.y - diagonalSizeY / 2).toBeCloseTo(this.initialPoint.y - 1, 1); - - expect(this.shape.segments[6].point.x - diagonalSizeX * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.x, 1); - expect(this.shape.segments[6].point.y - diagonalSizeY * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.y, 1); - - expect(this.shape.segments[7].point.x - diagonalSizeX / 2).toBeCloseTo(this.initialPoint.x - 1, 1); - expect(this.shape.segments[7].point.y).toBeCloseTo(this.initialPoint.y + diagonalSize - 1, 1); - - expect(this.shape.segments[8].point.x - event.delta.x).toBeCloseTo(this.initialPoint.x - 2, 1); - expect(this.shape.segments[8].point.y - diagonalSizeY * ((2 - Math.sqrt(2)) / 4)).toBeCloseTo(this.initialPoint.y, 1); - - expect(this.shape.segments[9].point.x - diagonalSizeX).toBeCloseTo(this.initialPoint.x - diagonalSize - 1, 1); - expect(this.shape.segments[9].point.y - diagonalSizeY / 2).toBeCloseTo(this.initialPoint.y - 1, 1); - }); - - - function rotatePoint(point, initialPoint, angle) { - var angleRad = angle * Math.PI / 180.0; - return { - x: Math.cos(angleRad) * (point.x - initialPoint.x) - Math.sin(angleRad) * (point.y - initialPoint.y) + initialPoint.x, - y: Math.sin(angleRad) * (point.x - initialPoint.x) + Math.cos(angleRad) * (point.y - initialPoint.y) + initialPoint.y - }; - } - - it('should rotate the whole ellipse shape', function() { - var size = { - 'x': 1, - 'y': 1 - }; - var scale = 2; - var rotationAngle = -90; - // -90 degrees rotation + scale - var event = TestUtils.getEvent({ - 'x': -size.x, - 'y': size.y - }, { - 'x': this.shape.position.x, - 'y': this.shape.position.y - size.y - }); - var localCenterPoint = { - 'x': this.shape.position.x, - 'y': this.shape.position.y - }; - - overlay.mode = 'rotate'; - overlay.path = this.shape; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = this.shape.segments[idx].point; - point = rotatePoint(point, localCenterPoint, rotationAngle); - expected.push(point); - } - this.ellipse.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should create ellipse shape', function() { - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 1000, - 'y': this.initialPoint.y + 1000 - }); - overlay.mode = ''; - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.path).not.toBeNull(); - expect(overlay.onDrawFinish.calls.count()).toEqual(0); - - this.ellipse.onMouseUp(event, overlay); - - expect(overlay.onDrawFinish.calls.count()).toEqual(1); - - overlay.mode = ''; - overlay.onDrawFinish.calls.reset(); - this.ellipse.onMouseUp(event, overlay); - - expect(overlay.onDrawFinish.calls.count()).toEqual(0); - }); - - describe('should select elipse shape when clicking on',function(){ - - beforeEach(function(){ - overlay.mode = ''; - }); - - it('point[6] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[6]); - expect(overlay.path).toBe(this.shape); - }); - - it('point[5] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + diagonalSize - 1, - 'y': this.initialPoint.y - 1 - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[5]); - expect(overlay.path).toBe(this.shape); - - }); - - it('point[1] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - diagonalSize - 1 - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[1]); - expect(overlay.path).toBe(this.shape); - - }); - - it('point[0] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 2, - 'y': this.initialPoint.y - 2 - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[0]); - expect(overlay.path).toBe(this.shape); - - }); - - it('point[7] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y + diagonalSize - 1 - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[7]); - expect(overlay.path).toBe(this.shape); - - }); - - it('point[8] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 2, - 'y': this.initialPoint.y - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[8]); - expect(overlay.path).toBe(this.shape); - - }); - - it('point[9] to deform ellipse', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - diagonalSize - 1, - 'y': this.initialPoint.y - 1 - }); - this.ellipse.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[9]); - expect(overlay.path).toBe(this.shape); - }); - - }); - - it('should change stroke when hovering ellipse',function(){ - var red = { - r:1, - g:0, - b:0 - }; - this.ellipse.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.hovered).toBe(true); - expect(this.shape.strokeColor.red).toBe(red.r); - expect(this.shape.strokeColor.green).toBe(red.g); - expect(this.shape.strokeColor.blue).toBe(red.b); - }); - - it('should change stroke back to original when not hovering ellipse',function(){ - - var oldColor = this.shape.strokeColor; - this.ellipse.onHover(true,this.shape,'red'); - - expect(this.shape.data.nonHoverStrokeColor.red).toBe(oldColor.red); - expect(this.shape.data.nonHoverStrokeColor.green).toBe(oldColor.green); - expect(this.shape.data.nonHoverStrokeColor.blue).toBe(oldColor.blue); - - this.ellipse.onHover(false,this.shape,1); - expect(this.shape.data.hovered).toBe(undefined); - expect(this.shape.strokeColor.red).toBe(oldColor.red); - expect(this.shape.strokeColor.green).toBe(oldColor.green); - expect(this.shape.strokeColor.blue).toBe(oldColor.blue); - }); - - - it('should change cursor to move when stroke is hit',function(){ - var hitResult = { - type:'stroke' - }; - - overlay.viewer.canvas = this.canvas; - this.ellipse.setCursor(hitResult,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should change cursor to move when handle-in is hit',function(){ - var hitResult = { - type:'handle-in' - }; - - overlay.viewer.canvas = this.canvas; - this.ellipse.setCursor(hitResult,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should change cursor to move when handle-out is hit',function(){ - var hitResult = { - type:'handle-in' - }; - - overlay.viewer.canvas = this.canvas; - this.ellipse.setCursor(hitResult,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - // it('should change cursor when hovering icon',function(){ - // - // }); - - it('should change cursor on mouse move',function(){ - var event = TestUtils.getEvent({},{ - x: this.initialPoint.x, - y: this.initialPoint.y - }); - overlay.viewer.canvas = this.canvas; - this.ellipse.onMouseMove(event,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should not update selection if the item is part of selected shape',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return 'dummy_tool_shape'; - } - } - }; - this.ellipse.updateSelection(true,item,overlay); - expect(item.selected).toBeUndefined(); - }); - - it('should resize the trash can icon when resized',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.ellipse.idPrefix + _this.ellipse.partOfPrefix + 'delete'; - } - }, - data:{ - self:new overlay.annotationUtils.DeleteActionIcon(), - parent:{ // should use mock shape - data:{ - rotation:1 - }, - contains:jasmine.createSpy().and.returnValue(true) - } - } - }; - - this.ellipse.onResize(item,overlay); - - expect(item.data.self.resize).toHaveBeenCalledWith(24); - expect(item.data.self.rotate).toHaveBeenCalledWith(180); - }); - - }); -}); diff --git a/spec/annotations/osd-svg-freehand.test.js b/spec/annotations/osd-svg-freehand.test.js deleted file mode 100644 index 16f4221aa56ea64415f354146a72abbda61cfed3..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-freehand.test.js +++ /dev/null @@ -1,527 +0,0 @@ -paper.install(window); - -describe('Freehand', function() { - - beforeAll(function() { - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'paperId'); - jasmine.getFixtures().set(this.canvas); - paper.setup(this.canvas.attr('id')); - this.freehand = new Mirador.Freehand(); - }); - afterAll(function() { - delete this.freehand; - }); - - it('should create freehand shape', function() { - var initialPoint = { - 'x': 123, - 'y': 456 - }; - var overlay = MockOverlay.getOverlay(paper); - var shape = this.freehand.createShape(initialPoint, overlay); - - expect(overlay.mode).toBe('create'); - - expect(shape.strokeColor.red).toBe(1); - expect(shape.strokeColor.green).toBe(0); - expect(shape.strokeColor.blue).toBe(0); - - expect(shape.closed).toBe(false); - - expect(shape.name).toBe(this.freehand.idPrefix + '1'); - - expect(shape.segments.length).toBe(1); - - expect(shape.segments[0].point.x).toBe(initialPoint.x); - expect(shape.segments[0].point.y).toBe(initialPoint.y); - }); - - describe('Freehand Mouse Tool', function() { - var overlay; - - beforeEach(function() { - overlay = MockOverlay.getOverlay(paper); - this.freehand = new Mirador.Freehand(); - this.initialPoint = { - 'x': 987, - 'y': 654 - }; - this.shape = this.freehand.createShape(this.initialPoint, overlay); - var point = { - 'x': this.initialPoint.x + 5, - 'y': this.initialPoint.y - }; - this.shape.add(point); - point = { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y + 5 - }; - this.shape.add(point); - }); - - afterEach(function() { - delete this.shape; - delete this.freehand; - }); - - it('should update selection', function() { - var ellipseTool = new Mirador.Ellipse(); - var initialPoint = { - 'x': 987, - 'y': 654 - }; - var ellipse = ellipseTool.createShape(initialPoint, overlay); - this.freehand.updateSelection(true, ellipse, overlay); - - expect(this.shape.selected).toBe(false); - - this.freehand.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - - this.freehand.updateSelection(false, this.shape, overlay); - - expect(this.shape.selected).toBe(false); - expect(this.shape.data.deleteIcon).toBe(null); - }); - - it('should change stroke when hovering freehand',function(){ - var red = { - r:1, - g:0, - b:0 - }; - this.freehand.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.hovered).toBe(true); - expect(this.shape.strokeColor.red).toBe(red.r); - expect(this.shape.strokeColor.green).toBe(red.g); - expect(this.shape.strokeColor.blue).toBe(red.b); - }); - - it('should change stroke back to original when not hovering freehand',function(){ - - var oldColor = this.shape.strokeColor; - this.freehand.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.nonHoverStrokeColor.red).toBe(oldColor.red); - expect(this.shape.data.nonHoverStrokeColor.green).toBe(oldColor.green); - expect(this.shape.data.nonHoverStrokeColor.blue).toBe(oldColor.blue); - - this.freehand.onHover(false,this.shape,1); - expect(this.shape.data.hovered).toBe(undefined); - expect(this.shape.strokeColor.red).toBe(oldColor.red); - expect(this.shape.strokeColor.green).toBe(oldColor.green); - expect(this.shape.strokeColor.blue).toBe(oldColor.blue); - }); - - it('should do nothing', function() { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - overlay.mode = ''; - var localCenterPoint = { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - 1 - }; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - this.freehand.onMouseDrag(event, overlay); - - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should edit the whole freehand shape', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - this.freehand.updateSelection(true,this.shape,overlay); - overlay.mode = 'translate'; - overlay.path = this.shape; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } - this.freehand.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - var selectedPointIndex = 1; - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[selectedPointIndex]; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - if (idx == selectedPointIndex) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } else { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - } - this.freehand.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': 100, - 'y': 100 - }); - overlay.mode = 'create'; - overlay.path = this.shape; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - expected.push(event.point); - this.freehand.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should finish freehand shape', function() { - var event = TestUtils.getEvent(); - overlay.mode = 'create'; - overlay.shape = this.shape; - overlay.path = this.shape; - spyOn(overlay.path, 'simplify').and.callThrough(); - this.freehand.onMouseUp(event, overlay); - expect(overlay.path.simplify).toHaveBeenCalled(); - expect(overlay.onDrawFinish).toHaveBeenCalled(); - }); - - // TODO this should be refactored - it('should select freehand shape', function() { - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 100, - 'y': this.initialPoint.y - 100 - }); - overlay.mode = ''; - this.freehand.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('create'); - expect(overlay.segment).toBeNull(); - expect(overlay.path).not.toBe(this.shape); - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 100, - 'y': this.initialPoint.y - 100 - }, { - 'shift': null - }); - overlay.mode = 'create'; - overlay.path = this.shape; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'translate'; - this.freehand.onMouseDown(event, overlay); - - expect(overlay.segment.point.x).toBe(event.point.x); - expect(overlay.segment.point.y).toBe(event.point.y); - - expect(overlay.path).not.toBe(this.shape); - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'translate'; - overlay.path = this.shape; - - this.freehand.onMouseDown(event, overlay); - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 5, - 'y': this.initialPoint.y - }, { - 'shift': 'selected' - }); - - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - if (point.x != event.point.x || point.y != event.point.y) { - expected.push(point); - } - } - - overlay = overlay = MockOverlay.getOverlay(paper); - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': 'selected' - }); - overlay.mode = ''; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - - MockOverlay.getOverlay(paper); - overlay.mode='edit'; - overlay.path = this.shape; - - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 100, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - overlay.hitOptions.stroke = false; - overlay.hitOptions.segments = false; - overlay.hitOptions.tolerance = 5; - - this.shape.closed = true; - this.shape.fillColor = '#0000ff'; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.freehand.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should select prefixed shapes', function() { - var event = TestUtils.getEvent(); - spyOn(overlay.paperScope.project, 'hitTest').and.returnValue({ - item: this.shape - }); - this.shape._name = "12-ABCD-EFG"; - this.shape.data.self = jasmine.createSpyObj('self', ['onMouseDown']); - this.freehand.idPrefix = "ABCD"; - this.freehand.partOfPrefix = "12"; - this.freehand.onMouseDown(event, overlay); - expect(this.shape.data.self.onMouseDown).toHaveBeenCalled(); - }); - - it('should resize the trash can icon when resized',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.freehand.idPrefix + _this.freehand.partOfPrefix + 'delete'; - } - }, - data:{ - self:new overlay.annotationUtils.DeleteActionIcon(), - parent:{ // should use mock shape - data:{ - rotation:1 - }, - contains:jasmine.createSpy().and.returnValue(true) - } - } - }; - - this.freehand.onResize(item,overlay); - - expect(item.data.self.resize).toHaveBeenCalledWith(24); - }); - - - it('should change cursor on mouse move',function(){ - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - overlay.viewer.canvas = this.canvas; - overlay.hoveredPath = this.shape; - this.freehand.onMouseMove(event,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - it('should set cursor to pointer on handle-in or handle-out', function() { - var _this = this; - jQuery.each(['handle-in', 'handle-out'], function(k, v) { - var hitResult = { type: v }; - overlay.viewer.canvas = _this.canvas; - _this.freehand.setCursor(hitResult, overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - }); - - it('should set cursor to move when stoke is hit',function(){ - var hitResult = { - type:'stroke' - }; - overlay.viewer.canvas = this.canvas; - this.freehand.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should set cursor to pointer when icon is hit',function(){ - var hitResult = { - type:'pixel' - }; - overlay.viewer.canvas = this.canvas; - this.freehand.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - }); -}); diff --git a/spec/annotations/osd-svg-overlay.test.js b/spec/annotations/osd-svg-overlay.test.js deleted file mode 100644 index 38d60f99bdbe80b5aef7dcd67c56eb557c5faa6e..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-overlay.test.js +++ /dev/null @@ -1,581 +0,0 @@ -describe('Overlay', function() { - - function getEvent(delta, point, lastPoint, event) { - return { - 'delta': delta, - 'point': point, - 'lastPoint': lastPoint, - 'event': event, - 'stopPropagation': jasmine.createSpy() - }; - } - - beforeEach(function() { - //register Handlebars helper - Mirador.Handlebars.registerHelper('t', function(i18n_key) { - var result = i18next.t(i18n_key); - return new Mirador.Handlebars.SafeString(result); - }); - - var id = 'test'; - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'draw_canvas_' + id); - jasmine.getFixtures().set(this.canvas); - this.eventEmitter = new Mirador.EventEmitter();// TODO should stub - this.windowObjMock = { - 'id': id, - 'windowId': id, - 'viewer': { - 'id': 'viewerId' - }, - 'canvasID': 'myCanvasId', - 'canvases': { - 'myCanvasId': {} - } - }; - this.viewerMock = { - 'canvas': { - 'appendChild': function() { - } - }, - 'viewport': { - 'getZoom': function() { - return 1.0; - }, - 'pixelFromPoint': function(point, current) { - return point; - }, - 'getBounds': function(current) { - return { - 'x': 800, - 'y': 600 - }; - }, - 'containerSize': { - 'x': 800, - 'y': 600 - }, - 'contentSize': { - 'x': 800, - 'y': 600 - }, - 'getBounds': function() { - return { - 'x': 0, - 'y': 0, - 'width': 800, - 'height': 600 - }; - } - }, - 'addHandler': function(eventName, functionBody) { - }, - 'removeHandler':function(eventName,functionBody){ - } - }; - var drawingToolsSettings = { - 'doubleClickReactionTime': 300, - 'strokeColor': 'deepSkyBlue', - 'fillColor': 'deepSkyBlue', - 'fillColorAlpha': 0.0 - }; - - var state = new Mirador.SaveController({ - eventEmitter: this.eventEmitter, - windowObjects: [this.windowObjMock] - }); // TODO should stub this - - state.getStateProperty = function(key) { - if (key === 'drawingToolsSettings') { - return { - 'doubleClickReactionTime': 300, - 'strokeColor': 'deepSkyBlue', - 'fillColor': 'deepSkyBlue', - 'fillColorAlpha': 0.0 - }; - } - if (key === 'availableAnnotationDrawingTools') { - return []; - } - if (key === 'availableExternalCommentsPanel') { - return false; - } - return null; - }; - - state.currentConfig.windowObjects[0].canvases['myCanvasId'].getBounds = function() { - return { - 'x': 800, - 'y': 600 - }; - }; - this.overlay = new Mirador.Overlay(this.viewerMock, this.windowObjMock.viewer.id, this.windowObjMock.windowId, state, new MockEventEmitter(this.eventEmitter)); - this.overlay.annotationUtils = new AnnotationUtilsStub(); - }); - - afterEach(function() { - delete this.overlay; - }); - - it('toggleDrawingTool', function() { - this.eventEmitter.publish('toggleDrawingTool.' + this.windowObjMock.windowId, [null]); - - expect(this.overlay.currentTool).toBeNull(); - - this.pin = new Mirador.Pin(); //TODO should use the dummy tool - this.overlay.disabled = true; - this.eventEmitter.publish('toggleDrawingTool.' + this.windowObjMock.windowId, [this.pin.logoClass]); - - expect(this.overlay.currentTool).toBeNull(); - - this.overlay.disabled = false; - this.eventEmitter.publish('toggleDrawingTool.' + this.windowObjMock.windowId, [this.pin.logoClass]); - - expect(this.overlay.currentTool).not.toBeNull(); - expect(this.overlay.currentTool.logoClass).toBe(this.pin.logoClass); - }); - - it('changeBorderColor', function() { - var color = '#ff0000'; - this.eventEmitter.publish('changeBorderColor.' + this.windowObjMock.windowId, [color]); - - expect(this.overlay.strokeColor).toBe(color); - - color = '#00ff00'; - this.rectangle = new Mirador.Rectangle(); // TODO should use the dummy object - var initialPoint = { - 'x': 123, - 'y': 456 - }; - - this.overlay.hoveredPath = this.rectangle.createShape(initialPoint, this.overlay); - - expect(this.overlay.hoveredPath.strokeColor.red).toBe(1); - expect(this.overlay.hoveredPath.strokeColor.green).toBe(0); - expect(this.overlay.hoveredPath.strokeColor.blue).toBe(0); - - this.eventEmitter.publish('changeBorderColor.' + this.windowObjMock.windowId, [color]); - - expect(this.overlay.strokeColor).toBe(color); - expect(this.overlay.hoveredPath.strokeColor.red).toBe(0); - expect(this.overlay.hoveredPath.strokeColor.green).toBe(1); - expect(this.overlay.hoveredPath.strokeColor.blue).toBe(0); - }); - - it('changeFillColor', function() { - var color = '#00ff00'; - var alpha = 0.00001; - this.eventEmitter.publish('changeFillColor.' + this.windowObjMock.windowId, [color, alpha]); - - expect(this.overlay.fillColor).toBe(color); - expect(this.overlay.fillColorAlpha).toBe(0.00001); - - color = '#ff0000'; - - this.rectangle = new Mirador.Rectangle(); // TODO should use the dummy tool - var initialPoint = { - 'x': 123, - 'y': 456 - }; - - this.overlay.hoveredPath = this.rectangle.createShape(initialPoint, this.overlay); - - expect(this.overlay.hoveredPath.fillColor.red).toBe(0); - expect(this.overlay.hoveredPath.fillColor.green).toBe(1); - expect(this.overlay.hoveredPath.fillColor.blue).toBe(0); - expect(this.overlay.hoveredPath.fillColor.alpha).toBe(0.00001); - - alpha = 0.5; - this.eventEmitter.publish('changeFillColor.' + this.windowObjMock.windowId, [color, alpha]); - - expect(this.overlay.fillColor).toBe(color); - expect(this.overlay.fillColorAlpha).toBe(alpha); - expect(this.overlay.hoveredPath.fillColor.red).toBe(1); - expect(this.overlay.hoveredPath.fillColor.green).toBe(0); - expect(this.overlay.hoveredPath.fillColor.blue).toBe(0); - expect(this.overlay.hoveredPath.fillColor.alpha).toBe(0.5); - - this.polygon = new Mirador.Polygon(); // TODO should use the dummy tool - this.overlay.hoveredPath = this.polygon.createShape(initialPoint, this.overlay); - - }); - - it('getTools', function() { - expect(Mirador.svgOverlayTools).not.toBeNull(); - - var cache = Mirador.svgOverlayTools; - var newTools = Mirador.getTools(); - - expect(cache.length).toBe(newTools.length); - for (var i = 0; i < cache.length; i++) { - expect(cache[i]).toBe(newTools[i]); - } - }); - - it('onDrawFinish', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - var initialPoint = { - 'x': 123, - 'y': 456 - }; - - this.overlay.hoveredPath = this.rectangle.createShape(initialPoint, this.overlay); - this.overlay.onDrawFinish(); - - expect(this.overlay.hoveredPath).not.toBeNull(); - expect(this.overlay.hoveredPath).not.toBe(this.overlay.path); - - this.overlay.path = this.rectangle.createShape(initialPoint, this.overlay); - this.overlay.onDrawFinish(); - - expect(this.overlay.hoveredPath).not.toBeNull(); - expect(this.overlay.hoveredPath).not.toBe(this.overlay.path); - - var comment = this.overlay.commentPanel; - this.overlay.hoveredPath = null; - this.overlay.path = this.rectangle.createShape(initialPoint, this.overlay); - this.overlay.onDrawFinish(); - - expect(this.overlay.hoveredPath).not.toBeNull(); - expect(this.overlay.hoveredPath).not.toBe(this.overlay.path); - expect(this.overlay.commentPanel).toBe(comment); - }); - - it('onMouseUp', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - spyOn(this.rectangle, 'onMouseUp'); - var event = getEvent({ - 'x': 100, - 'y': 100 - }); - this.overlay.overlay = this.overlay; - this.overlay.disabled = true; - this.overlay.onMouseUp(event); - - expect(this.rectangle.onMouseUp.calls.count()).toEqual(0); - - this.overlay.currentTool = this.rectangle; - this.overlay.disabled = false; - this.overlay.onMouseUp(event); - - expect(this.rectangle.onMouseUp.calls.count()).toEqual(1); - }); - - it('onMouseDrag', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - spyOn(this.rectangle, 'onMouseDrag'); - var event = getEvent({ - 'x': 100, - 'y': 100 - }, {}, { - 'x' : 99, - 'y' : 99 - }, { - 'clientX': 100, - 'clientX': 100 - }); - this.overlay.path = {}; - this.overlay.path.bounds = { - 'x': 0, - 'y': 0, - 'width': 100, - height: 100 - }; - this.overlay.overlay = this.overlay; - this.overlay.disabled = true; - this.overlay.onMouseDrag(event); - - expect(this.rectangle.onMouseDrag.calls.count()).toEqual(0); - - this.overlay.currentTool = this.rectangle; - this.overlay.disabled = false; - this.overlay.onMouseDrag(event); - - expect(this.rectangle.onMouseDrag.calls.count()).toEqual(1); - }); - - it('onMouseMove', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - spyOn(this.rectangle, 'onMouseMove'); - var event = getEvent({ - 'x': 100, - 'y': 100 - }, {}, {}, { - 'clientX': 100, - 'clientX': 100 - }); - this.overlay.overlay = this.overlay; - this.overlay.disabled = true; - this.overlay.onMouseMove(event); - - expect(this.rectangle.onMouseMove.calls.count()).toEqual(0); - - this.overlay.currentTool = this.rectangle; - this.overlay.disabled = false; - this.overlay.onMouseMove(event); - - expect(this.rectangle.onMouseMove.calls.count()).toEqual(1); - }); - - it('onDoubleClick', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - spyOn(this.rectangle, 'onDoubleClick'); - var event = getEvent({ - 'x': 100, - 'y': 100 - }); - this.overlay.overlay = this.overlay; - this.overlay.onDoubleClick(event); - - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(0); - - this.overlay.currentTool = this.rectangle; - this.overlay.onDoubleClick(event); - - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - }); - - it('should not select non editable item',function(){ - var stubbedTool = { - onMouseDown : jasmine.createSpy(), - onDoubleClick: jasmine.createSpy() - }; - - var event = getEvent({ - 'x': 100, - 'y': 100 - }, { - 'x': 100, - 'y': 100 - }); - - var date = new Date(); - this.overlay.latestMouseDownTime = date.getTime() -2 * this.overlay.doubleClickReactionTime; - this.overlay.overlay = this.overlay; - this.overlay.disabled = false; - - var rectangle = new Mirador.Rectangle();// TODO should use stubbed tool // should stub the hitTest - this.overlay.currentTool = rectangle; - - event.item = rectangle.createShape(event.point, this.overlay); - this.overlay.mode = ''; - - this.overlay.onMouseDown(event); - - expect(stubbedTool.onMouseDown.calls.count()).toEqual(0); - expect(stubbedTool.onDoubleClick.calls.count()).toEqual(0); - }); - - it('onMouseDown', function() { - this.rectangle = new Mirador.Rectangle(); // TODO should use stubbed tool - spyOn(this.rectangle, 'onMouseDown'); - spyOn(this.rectangle, 'onDoubleClick'); - var event = getEvent({ - 'x': 100, - 'y': 100 - }, { - 'x': 100, - 'y': 100 - }); - var date = new Date(); - this.overlay.latestMouseDownTime = date.getTime(); - this.overlay.overlay = this.overlay; - this.overlay.disabled = true; - - this.overlay.currentTool = this.rectangle; - this.overlay.mode = 'create'; - - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(0); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(0); - - this.overlay.currentTool = this.rectangle; - this.overlay.disabled = false; - this.overlay.mode = 'create'; - - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(0); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(1); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - // click without hovering items - this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - this.overlay.currentTool = undefined; - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(1); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - // hover item - event.item = this.rectangle.createShape(event.point, this.overlay); - event.item.data.editable = true; - this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - this.overlay.currentTool = this.rectangle; - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(2); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - // // hover new item and add to edited paths - this.overlay.currentTool = this.rectangle; - event.item = this.rectangle.createShape(event.point, this.overlay); // TODO SEEMS TO BE OUTDATED test - event.item.data.editable = true; - // this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - // this.overlay.mode = 'translate'; - // this.overlay.path = event.item; - // this.overlay.path.data.annotation = '<svg>stored svg</svg>'; - // this.overlay.onMouseDown(event); - // - // expect(this.rectangle.onMouseDown.calls.count()).toEqual(3); - // expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - // hover new item - this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - - this.overlay.onMouseDown(event); - - expect(this.rectangle.onMouseDown.calls.count()).toEqual(3); - expect(this.rectangle.onDoubleClick.calls.count()).toEqual(1); - - this.overlay.restoreEditedShapes(); - this.overlay.restoreDraftShapes(); - - this.overlay.latestMouseDownTime -= 2 * this.overlay.doubleClickReactionTime; - this.overlay.hoveredPath = this.rectangle.createShape(event.point, this.overlay); - this.overlay.segment = this.overlay.hoveredPath.segments[0]; - this.overlay.path = this.overlay.hoveredPath; - event = getEvent({ - 'x': 1000, - 'y': 1000 - }, { - 'x': 1000, - 'y': 1000 - }); - this.ellipse = new Mirador.Ellipse(); // TODO SHOULD STUB - var newShape = this.ellipse.createShape(event.point, this.overlay); - newShape.data.editable = true; - this.overlay.mode = ''; - - this.overlay.onMouseDown(event); - - expect(this.overlay.hoveredPath).toBe(newShape); - expect(this.overlay.segment).toBe(newShape.segments[0]); - expect(this.overlay.path).toBe(newShape); - expect(this.overlay.mode).toEqual('deform'); - }); - - it('parseSVG', function() { - var svg = '<svg xmlns="http://www.w3.org/2000/svg"><g><path d="M207.55023,187.98214l143.12613,0l143.12613,0l0,97.81055l0,97.81055l-143.12613,0l-143.12613,0l0,-97.81055z" data-paper-data="{"rotation":0,"annotation":null}" id="rectangle_154807a4-4121-43f0-a920-5e6792523959" fill-opacity="0.5" fill="#008000" stroke="#ff0000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" mix-blend-mode="normal"/><path xmlns="http://www.w3.org/2000/svg" d="M465.02563,80.868c27.12902,-14.80678 65.56711,-23.45636 103.98969,-23.45148c38.42258,0.00488 76.82965,8.66424 103.98969,23.45148c27.16004,14.78724 43.07305,35.70236 43.07394,56.61687c0.00089,20.91451 -15.91035,41.82842 -43.07394,56.61687c-27.16359,14.78845 -66.01382,23.21455 -103.98969,23.45148c-37.97587,0.23693 -76.58764,-8.53597 -103.98969,-23.45148c-27.40205,-14.91551 -43.17951,-35.75374 -43.07394,-56.61687c0.10556,-20.86313 15.94492,-41.81009 43.07394,-56.61687z" data-paper-data="{"rotation":0,"annotation":null}" id="circle_3c667714-d8cf-4b52-80eb-d22e863cf486" fill-opacity="0.5" fill="#008000" stroke="#ff0000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" mix-blend-mode="normal"></path></g></svg>'; - var annotation = {}; - var result = this.overlay.parseSVG(svg, annotation); - - expect(result.length).toEqual(2); - expect(result[0].name).toContain('rectangle_'); - expect(result[1].name).toContain('circle_'); - }); - - // set of tests for both import and export functionality. Simulates load and store of annotation shapes. - it('getSVGString1', function() { - var svg='<svg xmlns=\'http://www.w3.org/2000/svg\'><g><path d="M207.55023,187.98214l143.12613,0l0,0l143.12613,0l0,97.81055l0,97.81055l-143.12613,0l-143.12613,0l0,-97.81055z" data-paper-data="{"rotation":0,"annotation":null}" id="rectangle_154807a4-4121-43f0-a920-5e6792523959" fill-opacity="0.5" fill="#008000" fill-rule="nonzero" stroke="#ff0000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" style="mix-blend-mode: normal"></path><path d="M465.02563,80.868c27.12902,-14.80678 65.56711,-23.45636 103.98969,-23.45148c38.42258,0.00488 76.82965,8.66424 103.98969,23.45148c27.16004,14.78724 43.07305,35.70236 43.07394,56.61687c0.00089,20.91451 -15.91035,41.82842 -43.07394,56.61687c-27.16359,14.78845 -66.01382,23.21455 -103.98969,23.45148c-37.97587,0.23693 -76.58764,-8.53597 -103.98969,-23.45148c-27.40205,-14.91551 -43.17951,-35.75374 -43.07394,-56.61687c0.10556,-20.86313 15.94492,-41.81009 43.07394,-56.61687z" data-paper-data="{"rotation":0,"annotation":null}" id="circle_3c667714-d8cf-4b52-80eb-d22e863cf486" fill-opacity="0.5" fill="#008000" fill-rule="nonzero" stroke="#ff0000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" style="mix-blend-mode: normal"></path></g></svg>' - var annotation = {}; - var result = this.overlay.parseSVG(svg, annotation); - var exportedSVG = this.overlay.getSVGString(result); - - // TODO should find better way to test this - // each style change results in failed test - //expect(svg).toEqual(exportedSVG); - }); - - it('getSVGString2', function() { - var svgTestTwo = '<svg xmlns=\'http://www.w3.org/2000/svg\'><path d="M207.55023,187.98214l143.12613,0l0,0l143.12613,0l0,97.81055l0,97.81055l-143.12613,0l-143.12613,0l0,-97.81055z" data-paper-data="{"rotation":0,"annotation":null}" id="rectangle_154807a4-4121-43f0-a920-5e6792523959" fill-opacity="0.5" fill="#008000" fill-rule="nonzero" stroke="#ff0000" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" style="mix-blend-mode: normal"></path></svg>'; - var annotation = {}; - var result = this.overlay.parseSVG(svgTestTwo, annotation); - var exportedSVGTestTwo = this.overlay.getSVGString(result); - - // TODO should find better way to test this - // each style change results in failed test - //expect(svgTestTwo).toEqual(exportedSVGTestTwo); - }); - - it('should delete shape',function(){ - - var mockShape = { - '_name': { - toString: function () { - - } - }, - remove:jasmine.createSpy() - }; - - this.overlay.draftPaths = [mockShape]; - - this.overlay.deleteShape(mockShape); - - expect(this.overlay.draftPaths.length).toBe(0); - expect(mockShape.remove.calls.any()).toBe(true); - }); - - it('should unsubscibe from all events when destroying',function(){ - this.overlay.destroy(); - for(var key in this.overlay.eventEmitter.events){ - expect(this.overlay.eventEmitter.events[key]).toBe(0); - } - }); - - it('sets and removes the mouse tool', function() { - var key = this.overlay.mouseToolKey; - var paperScope = this.overlay.paperScope; - - this.overlay.setMouseTool(); - expect(paperScope.tools.length).toEqual(1); - - this.overlay.removeMouseTool(); - expect(paperScope.tools.length).toEqual(0); - }); - - describe("When there are two overlays: ", function() { - - beforeEach(function() { - var state = new Mirador.SaveController({eventEmitter: this.eventEmitter}); - - this.overlay2 = new Mirador.Overlay(this.viewerMock, this.windowObjMock.viewer.id, this.windowObjMock.windowId, state, new MockEventEmitter(this.eventEmitter)); - this.overlay2.annotationUtils = new AnnotationUtilsStub(); - }); - - afterEach(function() { - delete this.overlay2; - }); - - it("creates different paperScopes for each overlay", function() { - expect(this.overlay.paperScope._id).not.toEqual(this.overlay2.paperScope._id); - }); - - it("the global paper object should be set to the most recently instantiated paperScope", function() { - // since overlay2 was created most recently, the global paper object should be set to the paperScope of overlay2 - expect(paper._id).toEqual(this.overlay2.paperScope._id); - }); - - it("correctly sets the global paper object when an overlay's setMouseTool method is called", function(){ - // make sure the global paper object is set to the paperScope of overlay2 - expect(paper._id).toEqual(this.overlay2.paperScope._id); - // call setMouseTool on the first overlay - this.overlay.setMouseTool(); - // make sure the global paper object is set to the paperScope of the first overlay - expect(paper._id).toEqual(this.overlay.paperScope._id); - // call setMouseTool on overlay2 and check the global paper object again - this.overlay2.setMouseTool(); - expect(paper._id).toEqual(this.overlay2.paperScope._id); - expect(paper._id).not.toEqual(this.overlay.paperScope._id); - }); - }); - -}); diff --git a/spec/annotations/osd-svg-pin.test.js b/spec/annotations/osd-svg-pin.test.js deleted file mode 100644 index 37da5a5ef674f0d91e02968778df3525da9b34b9..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-pin.test.js +++ /dev/null @@ -1,326 +0,0 @@ -paper.install(window); - -describe('Pin', function() { - var pinNumber; - - beforeAll(function() { - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'paperId'); - jasmine.getFixtures().set(this.canvas); - paper.setup(this.canvas.attr('id')); - this.pin = new Mirador.Pin(); - pinNumber = 0; - }); - - afterAll(function() { - delete this.pin; - }); - - it('should create pin shape', function() { - var initialPoint = { - 'x': 123, - 'y': 456 - }; - var overlay = MockOverlay.getOverlay(paper); - var shape = this.pin.createShape(initialPoint, overlay); - - expect(overlay.mode).toBe('create'); - - expect(shape.strokeColor.red).toBe(1); - expect(shape.strokeColor.green).toBe(0); - expect(shape.strokeColor.blue).toBe(0); - - expect(shape.fillColor.red).toBe(1); - expect(shape.fillColor.green).toBe(0); - expect(shape.fillColor.blue).toBe(0); - - expect(shape.fillColor.alpha).toBe(overlay.fillColorAlpha); - - expect(shape.closed).toBe(true); - - expect(shape.name).toBe(this.pin.idPrefix + '1'); - - expect(shape.segments.length).toBe(5); - - expect(shape.segments[0].point.x).toBe(initialPoint.x); - expect(shape.segments[0].point.y).toBe(initialPoint.y); - }); - - describe('Pin Mouse Tool', function() { - var overlay; - - beforeEach(function() { - overlay = MockOverlay.getOverlay(paper); - this.pin = new Mirador.Pin(); - this.initialPoint = { - 'x': 987, - 'y': 654 - }; - this.shape = this.pin.createShape(this.initialPoint, overlay); - }); - - afterEach(function() { - delete this.shape; - delete this.pin; - }); - - it('should update selection to true', function() { - var initialPoint = { - 'x': 987, - 'y': 654 - }; - - var event = TestUtils.getEvent(initialPoint); - - this.pin.updateSelection(true, this.shape, overlay); - - var redColor = { - red:1, - green: 0, - blue:0 - }; - - expect(this.shape.strokeColor.red).toBe(redColor.red); - expect(this.shape.strokeColor.green).toBe(redColor.green); - expect(this.shape.strokeColor.blue).toBe(redColor.blue); - expect(this.shape.data.deleteIcon).not.toBeUndefined; - }); - - it('should update selection to false', function() { - var initialPoint = { - 'x': 987, - 'y': 654 - }; - - var event = TestUtils.getEvent(initialPoint); - - this.pin.updateSelection(true, this.shape, overlay); - - this.pin.updateSelection(false, this.shape, overlay); - - var redColor = { - red:1, - green: 0, - blue:0 - }; - - expect(this.shape.strokeColor.red).toBe(redColor.red); - expect(this.shape.strokeColor.green).toBe(redColor.green); - expect(this.shape.strokeColor.blue).toBe(redColor.blue); - expect(this.shape.data.deleteIcon).toBeUndefined; - }); - - it('should change stroke when hovering pin',function(){ - var red = { - r:1, - g:0, - b:0 - }; - this.pin.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.hovered).toBe(true); - expect(this.shape.strokeColor.red).toBe(red.r); - expect(this.shape.strokeColor.green).toBe(red.g); - expect(this.shape.strokeColor.blue).toBe(red.b); - }); - - it('should change stroke back to original when not hovering pin',function(){ - - var oldColor = this.shape.strokeColor; - this.pin.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.nonHoverStrokeColor.red).toBe(oldColor.red); - expect(this.shape.data.nonHoverStrokeColor.green).toBe(oldColor.green); - expect(this.shape.data.nonHoverStrokeColor.blue).toBe(oldColor.blue); - - this.pin.onHover(false,this.shape,1); - expect(this.shape.data.hovered).toBe(undefined); - expect(this.shape.strokeColor.red).toBe(oldColor.red); - expect(this.shape.strokeColor.green).toBe(oldColor.green); - expect(this.shape.strokeColor.blue).toBe(oldColor.blue); - }); - - it('should do nothing when no mode is selected', function() { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - overlay.mode = ''; - var localCenterPoint = { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - 1 - }; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.pin.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should translate the whole pin shape', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - this.pin.updateSelection(true,this.shape,overlay); - overlay.mode = 'translate'; - overlay.path = this.shape; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } - this.pin.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should not translate the whole pin shape when no pin is selected', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - overlay.mode = 'translate'; - overlay.path = this.shape; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } - overlay.mode = 'translate'; - this.pin.onMouseDrag(event, overlay); - - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should select pin shape for translate', function() { - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - - overlay.mode = ''; - this.pin.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('translate'); - expect(overlay.segment).toBeNull(); - expect(overlay.path).toBe(this.shape); - - this.pin.onMouseDown(event, overlay); - - expect(overlay.mode).toBe(''); - expect(overlay.segment).toBeNull(); - expect(overlay.path).toBeNull(); - }); - - it('should create pin',function(){ - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 100, - 'y': this.initialPoint.y + 100 - }); - - overlay.mode = ''; - this.pin.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('create'); - }); - - it('should bubble onMouseDown event when the part-of prefix is found', function() { - var mockHitResult = { - item: { - _name: "abcdefg", - data: { self: { onMouseDown: jasmine.createSpy('onMouseDown') } } - } - }; - spyOn(overlay.paperScope.project, 'hitTest').and.returnValue(mockHitResult); - this.pin.partOfPrefix = "cde"; - this.pin.idPrefix = "ab"; - var event = TestUtils.getEvent({}, { - x: this.initialPoint.x, - y: this.initialPoint.y - }); - this.pin.onMouseDown(event, overlay); - expect(mockHitResult.item.data.self.onMouseDown).toHaveBeenCalled(); - }); - - it('should change cursor on mouse move',function(){ - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - overlay.viewer.canvas = this.canvas; - overlay.hoveredPath = this.shape; - this.pin.onMouseMove(event,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should set cursor to pointer when stoke is hit',function(){ - var hitResult = { - type:'stroke' - }; - overlay.viewer.canvas = this.canvas; - this.pin.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should set cursor to pointer when icon is hit',function(){ - var hitResult = { - type:'pixel' - }; - overlay.viewer.canvas = this.canvas; - this.pin.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - it('should resize the trash can icon',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.pin.idPrefix + _this.pin.partOfPrefix + 'delete'; - } - }, - data:{ - self:new overlay.annotationUtils.DeleteActionIcon(), - parent:{ // should use mock shape - data:{ - rotation:1 - }, - contains:jasmine.createSpy().and.returnValue(true) - } - } - }; - - this.pin.onResize(item,overlay); - - expect(item.data.self.resize).toHaveBeenCalledWith(24); - }); - - }); - -}); diff --git a/spec/annotations/osd-svg-polygon.test.js b/spec/annotations/osd-svg-polygon.test.js deleted file mode 100644 index aed971fee314ffc64f4a1d9d87f8db378f7258d0..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-polygon.test.js +++ /dev/null @@ -1,574 +0,0 @@ -paper.install(window); - -describe('Polygon', function() { - - beforeAll(function() { - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'paperId'); - jasmine.getFixtures().set(this.canvas); - paper.setup(this.canvas.attr('id')); - this.polygon = new Mirador.Polygon(); - }); - afterAll(function() { - delete this.polygon; - }); - - it('should create polygon shape', function() { - var initialPoint = { - 'x': 123, - 'y': 456 - }; - var overlay = MockOverlay.getOverlay(paper); - var shape = this.polygon.createShape(initialPoint, overlay); - - expect(overlay.mode).toBe('create'); - - expect(shape.strokeColor.red).toBe(1); - expect(shape.strokeColor.green).toBe(0); - expect(shape.strokeColor.blue).toBe(0); - - expect(shape.closed).toBe(false); - - expect(shape.name).toBe(this.polygon.idPrefix + '1'); - - expect(shape.segments.length).toBe(1); - - expect(shape.segments[0].point.x).toBe(initialPoint.x); - expect(shape.segments[0].point.y).toBe(initialPoint.y); - }); - - describe('Polygon Mouse Tool', function() { - var overlay; - - beforeEach(function() { - overlay = MockOverlay.getOverlay(paper); - this.polygon = new Mirador.Polygon(); - this.initialPoint = { - 'x': 987, - 'y': 654 - }; - this.shape = this.polygon.createShape(this.initialPoint, overlay); - var point = { - 'x': this.initialPoint.x + 5, - 'y': this.initialPoint.y - }; - this.shape.add(point); - point = { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y + 5 - }; - this.shape.add(point); - }); - - afterEach(function() { - delete this.shape; - delete this.polygon; - }); - - it('should update selection', function() { - var ellipseTool = new Mirador.Ellipse(); // TODO should use stub - var initialPoint = { - 'x': 987, - 'y': 654 - }; - var ellipse = ellipseTool.createShape(initialPoint, overlay); - this.polygon.updateSelection(true, ellipse, overlay); - - expect(this.shape.selected).toBe(false); - - this.polygon.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - }); - - it('should update selection to true', function() { - overlay.mode = 'edit'; - this.polygon.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - expect(this.shape.data.deleteIcon).not.toBeUndefined(); - }); - - it('should update selection to false', function() { - overlay.mode = 'edit' - this.polygon.updateSelection(true, this.shape, overlay); - this.polygon.updateSelection(false, this.shape, overlay); - - expect(this.shape.selected).toBe(false); - expect(this.shape.data.deleteIcon).toBe(null); - }); - - - it('should change stroke when hovering polygon',function(){ - var red = { - r:1, - g:0, - b:0 - }; - this.polygon.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.hovered).toBe(true); - expect(this.shape.strokeColor.red).toBe(red.r); - expect(this.shape.strokeColor.green).toBe(red.g); - expect(this.shape.strokeColor.blue).toBe(red.b); - }); - - it('should change stroke back to original when not hovering polygon',function(){ - - var oldColor = this.shape.strokeColor; - this.polygon.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.nonHoverStrokeColor.red).toBe(oldColor.red); - expect(this.shape.data.nonHoverStrokeColor.green).toBe(oldColor.green); - expect(this.shape.data.nonHoverStrokeColor.blue).toBe(oldColor.blue); - - this.polygon.onHover(false,this.shape,1); - expect(this.shape.data.hovered).toBe(undefined); - expect(this.shape.strokeColor.red).toBe(oldColor.red); - expect(this.shape.strokeColor.green).toBe(oldColor.green); - expect(this.shape.strokeColor.blue).toBe(oldColor.blue); - }); - - it('should do nothing', function() { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - overlay = MockOverlay.getOverlay(paper); - var localCenterPoint = { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - 1 - }; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - this.polygon.onMouseDrag(event, overlay); - - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should edit the whole polygon shape', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - overlay.mode = 'edit'; - this.polygon.updateSelection(true,this.shape,overlay); - overlay.mode = 'translate'; - overlay.path = this.shape; - - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } - this.polygon.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - var selectedPointIndex = 1; - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[selectedPointIndex]; - - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - if (idx == selectedPointIndex) { - var point = { - 'x': this.shape.segments[idx].point.x + event.delta.x, - 'y': this.shape.segments[idx].point.y + event.delta.y - }; - expected.push(point); - } else { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - } - this.polygon.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should finish generation of polygon shape', function() { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - overlay.mode = 'create'; - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onDoubleClick(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - overlay = MockOverlay.getOverlay(paper); - overlay.path = this.shape; - overlay.mode = 'create'; - this.polygon.onDoubleClick(event, overlay); - - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({ - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - overlay = MockOverlay.getOverlay(paper); - overlay.path = this.shape; - overlay.hitOptions.stroke = false; - overlay.hitOptions.segments = false; - overlay.hitOptions.tolerance = 5; - overlay.mode = 'create'; - - expected.push(this.initialPoint); - this.shape.add(this.initialPoint); - this.polygon.onDoubleClick(event, overlay); - - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - expect(this.shape.closed).toBe(true); - - expect(this.shape.fillColor.red).toBe(1); - expect(this.shape.fillColor.green).toBe(0); - expect(this.shape.fillColor.blue).toBe(0); - - expect(this.shape.fillColor.alpha).toBe(overlay.fillColorAlpha); - }); - - it('should change cursor on mouse move',function(){ - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - overlay.viewer.canvas = this.canvas; - overlay.hoveredPath = this.shape; - this.polygon.onMouseMove(event,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - it('should set cursor to pointer on handle-in or handle-out', function() { - var _this = this; - jQuery.each(['handle-in', 'handle-out'], function(k, v) { - var hitResult = { type: v }; - overlay.viewer.canvas = _this.canvas; - _this.polygon.setCursor(hitResult, overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - }); - - it('should set cursor to pointer when stoke is hit',function(){ - var hitResult = { - type:'stroke' - }; - overlay.viewer.canvas = this.canvas; - this.polygon.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - it('should set cursor to pointer when icon is hit',function(){ - var hitResult = { - type:'pixel' - }; - overlay.viewer.canvas = this.canvas; - this.polygon.setCursor(hitResult,overlay); - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - it('should select polygon shape', function() { - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 100, - 'y': this.initialPoint.y - 100 - }); - overlay.mode = ''; - this.polygon.updateSelection(true,this.shape,overlay); - this.polygon.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('create'); - expect(overlay.segment).toBeNull(); - expect(overlay.path).not.toBe(this.shape); - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 100, - 'y': this.initialPoint.y - 100 - }, { - 'shift': null - }); - - overlay.mode = 'create'; - overlay.path = this.shape; - - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - expected.push(event.point); - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - - this.polygon.onMouseDown(event, overlay); - - expect(overlay.segment.point.x).toBe(event.point.x); - expect(overlay.segment.point.y).toBe(event.point.y); - - expect(overlay.path).not.toBe(this.shape); - expect(document.body.style.cursor).toBe('move'); - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'translate'; - overlay.path = this.shape; - this.polygon.onMouseDown(event, overlay); - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 5, - 'y': this.initialPoint.y - }, { - 'shift': 'selected' - }); - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = ''; - - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - if (point.x != event.point.x || point.y != event.point.y) { - expected.push(point); - } - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': 'selected' - }); - overlay = MockOverlay.getOverlay(paper); - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - overlay = MockOverlay.getOverlay(paper); - overlay.edit = 'edit'; - overlay.path = this.shape; - - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 3, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - - overlay = MockOverlay.getOverlay(paper); - overlay.mode = 'edit'; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 100, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - - event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }, { - 'shift': null - }); - overlay.mode = 'edit'; - overlay.hitOptions.stroke = false; - overlay.hitOptions.segments = false; - overlay.hitOptions.tolerance = 5; - this.shape.closed = true; - this.shape.fillColor = '#0000ff'; - expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - this.polygon.onMouseDown(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should select prefixed shapes', function() { - var event = TestUtils.getEvent(); - spyOn(overlay.paperScope.project, 'hitTest').and.returnValue({ - item: this.shape - }); - this.shape._name = "12-ABCD-EFG"; - this.shape.data.self = jasmine.createSpyObj('self', ['onMouseDown']); - this.polygon.idPrefix = "ABCD"; - this.polygon.partOfPrefix = "12"; - this.polygon.onMouseDown(event, overlay); - expect(this.shape.data.self.onMouseDown).toHaveBeenCalled(); - }); - - it('should resize the trash can icon when resized',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.polygon.idPrefix + _this.polygon.partOfPrefix + 'delete'; - } - }, - data:{ - self:new overlay.annotationUtils.DeleteActionIcon(), - parent:{ // should use mock shape - data:{ - rotation:1 - }, - contains:jasmine.createSpy().and.returnValue(true) - } - } - }; - - this.polygon.onResize(item,overlay); - - expect(item.data.self.resize).toHaveBeenCalledWith(24); - }); - - - }); - -}); diff --git a/spec/annotations/osd-svg-rectangle.test.js b/spec/annotations/osd-svg-rectangle.test.js deleted file mode 100644 index 9d612e3a2f1365169fd572800e7b3be36c79a920..0000000000000000000000000000000000000000 --- a/spec/annotations/osd-svg-rectangle.test.js +++ /dev/null @@ -1,604 +0,0 @@ -paper.install(window); - -describe('Rectangle', function() { - - beforeAll(function() { - this.canvas = jQuery('<canvas></canvas>'); - this.canvas.attr('id', 'paperId'); - jasmine.getFixtures().set(this.canvas); - paper.setup(this.canvas.attr('id')); - this.rectangle = new Mirador.Rectangle(); - }); - afterAll(function() { - delete this.rectangle; - }); - - it('should create rectangular shape', function() { - var initialPoint = { - 'x': 123, - 'y': 456 - }; - var overlay = MockOverlay.getOverlay(paper); - - var shape = this.rectangle.createShape(initialPoint, overlay); - - expect(overlay.mode).toBe('create'); - - expect(overlay.segment).toBe(shape.segments[5]); - - expect(shape.strokeColor.red).toBe(1); - expect(shape.strokeColor.green).toBe(0); - expect(shape.strokeColor.blue).toBe(0); - - expect(shape.fillColor.red).toBe(1); - expect(shape.fillColor.green).toBe(0); - expect(shape.fillColor.blue).toBe(0); - - expect(shape.fillColor.alpha).toBe(overlay.fillColorAlpha); - - expect(shape.closed).toBe(true); - - expect(shape.data.rotation).toBe(0); - - expect(shape.selected).toBe(true); - - expect(shape.name).toBe(this.rectangle.idPrefix + '1'); - - expect(shape.segments.length).toBe(9); - - expect(shape.segments[0].point.x).toBe(initialPoint.x - 2); - expect(shape.segments[0].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[1].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[1].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[2].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[2].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[3].point.x).toBe(initialPoint.x); - expect(shape.segments[3].point.y).toBe(initialPoint.y - 2); - - expect(shape.segments[4].point.x).toBe(initialPoint.x); - expect(shape.segments[4].point.y).toBe(initialPoint.y - 1); - - expect(shape.segments[5].point.x).toBe(initialPoint.x); - expect(shape.segments[5].point.y).toBe(initialPoint.y); - - expect(shape.segments[6].point.x).toBe(initialPoint.x - 1); - expect(shape.segments[6].point.y).toBe(initialPoint.y); - - expect(shape.segments[7].point.x).toBe(initialPoint.x - 2); - expect(shape.segments[7].point.y).toBe(initialPoint.y); - - expect(shape.segments[8].point.x).toBe(initialPoint.x - 2); - expect(shape.segments[8].point.y).toBe(initialPoint.y - 1); - }); - - describe('Rectangle Mouse Tool', function() { - var overlay; - - beforeEach(function() { - overlay = MockOverlay.getOverlay(paper); - this.rectangle = new Mirador.Rectangle(); - this.initialPoint = { - 'x': 987, - 'y': 654 - }; - this.shape = this.rectangle.createShape(this.initialPoint, overlay); - }); - - afterEach(function() { - delete this.shape; - delete this.rectangle; - }); - - it('should update selection to false', function() { - // when created the shape is selected by default - expect(this.shape.selected).toBe(true); - - this.rectangle.updateSelection(false, this.shape, overlay); - - expect(this.shape.selected).toBe(false); - - this.rectangle.updateSelection(true, this.shape, overlay); - - expect(this.shape.selected).toBe(true); - }); - - it('should change stroke when hovering rectangle',function(){ - var red = { - r:1, - g:0, - b:0 - }; - this.rectangle.onHover(true,this.shape,1,'red'); - - expect(this.shape.data.hovered).toBe(true); - expect(this.shape.strokeColor.red).toBe(red.r); - expect(this.shape.strokeColor.green).toBe(red.g); - expect(this.shape.strokeColor.blue).toBe(red.b); - }); - - it('should change stroke back to original when not hovering rectangle',function(){ - var oldColor = this.shape.strokeColor; - - this.rectangle.onHover(true,this.shape,1,'red'); - expect(this.shape.data.nonHoverStrokeColor.red).toBe(oldColor.red); - expect(this.shape.data.nonHoverStrokeColor.green).toBe(oldColor.green); - expect(this.shape.data.nonHoverStrokeColor.blue).toBe(oldColor.blue); - - this.rectangle.onHover(false,this.shape,1); - expect(this.shape.data.hovered).toBe(undefined); - expect(this.shape.strokeColor.red).toBe(oldColor.red); - expect(this.shape.strokeColor.green).toBe(oldColor.green); - expect(this.shape.strokeColor.blue).toBe(oldColor.blue); - }); - - it('should do nothing on mouse drag when there is not set mode', function () { - var event = TestUtils.getEvent({ - 'x': 100, - 'y': 100 - }); - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = { - 'x': this.shape.segments[idx].point.x, - 'y': this.shape.segments[idx].point.y - }; - expected.push(point); - } - - overlay.mode = ''; - - this.rectangle.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should translate the whole rectangular shape', function() { - var event = TestUtils.getEvent({ - 'x': 3, - 'y': -3 - }); - - overlay.mode = 'translate'; - overlay.path = this.shape; - - this.rectangle.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x - event.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[2].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[3].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[3].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[4].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[5].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[5].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[6].point.x - event.delta.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[6].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x - event.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[7].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[8].point.x - event.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y).toBe(this.initialPoint.y - 1); - }); - - it('should resize the whole rectangular shape when resized from the bottom right corner and then from the top left corner', function() { - var event = TestUtils.getEvent({ - 'x': 10, - 'y': 100 - }); - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[5]; - this.rectangle.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x - event.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[2].point.x - event.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[3].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[3].point.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[4].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[5].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[5].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[6].point.x - event.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[6].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[7].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[8].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - - var event2 = TestUtils.getEvent({ - 'x': 100, - 'y': 10 - }); - overlay.segment = this.shape.segments[0]; - this.rectangle.onMouseDrag(event2, overlay); - - expect(this.shape.segments[0].point.x - event2.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y - event2.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x - event.delta.x / 2 - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y - event2.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[2].point.x - event.delta.x / 2 - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y - event2.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[3].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[3].point.y - event2.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[4].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y / 2 - event2.delta.y / 2).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[5].point.x - event.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[5].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[6].point.x - event.delta.x / 2 - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[6].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x - event2.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[7].point.y - event.delta.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[8].point.x - event2.delta.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y / 2 - event2.delta.y / 2).toBe(this.initialPoint.y - 1); - }); - - - it('should resize the whole rectangular shape from top middle corner and then left middle', function() { - var event = TestUtils.getEvent({ - 'x': 10, - 'y': 100 - }); - overlay.mode = 'deform'; - overlay.path = this.shape; - overlay.segment = this.shape.segments[2]; - - this.rectangle.onMouseDrag(event, overlay); - - expect(this.shape.segments[0].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[2].point.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[3].point.x).toBe(this.initialPoint.x); - expect(this.shape.segments[3].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[4].point.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[5].point.x).toBe(this.initialPoint.x); - expect(this.shape.segments[5].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[6].point.x).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[6].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[7].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[8].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - - var event2 = TestUtils.getEvent({ - 'x': 100, - 'y': 10 - }); - overlay .segment = this.shape.segments[4]; - this.rectangle.onMouseDrag(event2, overlay); - - expect(this.shape.segments[0].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[0].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[1].point.x - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[1].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[2].point.x - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[2].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[3].point.x - event2.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[3].point.y - event.delta.y).toBe(this.initialPoint.y - 2); - - expect(this.shape.segments[4].point.x - event2.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[4].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - - expect(this.shape.segments[5].point.x - event2.delta.x).toBe(this.initialPoint.x); - expect(this.shape.segments[5].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[6].point.x - event2.delta.x / 2).toBe(this.initialPoint.x - 1); - expect(this.shape.segments[6].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[7].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[7].point.y).toBe(this.initialPoint.y); - - expect(this.shape.segments[8].point.x).toBe(this.initialPoint.x - 2); - expect(this.shape.segments[8].point.y - event.delta.y / 2).toBe(this.initialPoint.y - 1); - }); - - it('should rotate the whole rectangular shape', function() { - var size = { - 'x': 1, - 'y': 1 - }; - var scale = 2; - var rotationAngle = -90; - // -90 degrees rotation + scale - var event = TestUtils.getEvent({ - 'x': -size.x, - 'y': size.y - }, { - 'x': this.shape.position.x, - 'y': this.shape.position.y - size.y - }); - var localCenterPoint = { - 'x': this.shape.position.x, - 'y': this.shape.position.y - }; - - overlay.mode = 'rotate'; - overlay.path = this.shape; - - var expected = []; - for (var idx = 0; idx < this.shape.segments.length; idx++) { - var point = this.shape.segments[idx].point; - point = TestUtils.rotatePoint(point, localCenterPoint, rotationAngle); - expected.push(point); - } - this.rectangle.onMouseDrag(event, overlay); - - expect(this.shape.segments.length).toBe(expected.length); - for (var idx = 0; idx < this.shape.segments.length; idx++) { - expect(this.shape.segments[idx].point.x).toBeCloseTo(expected[idx].x, 6); - expect(this.shape.segments[idx].point.y).toBeCloseTo(expected[idx].y, 6); - } - }); - - it('should create rectangular shape', function() { - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x + 1000, - 'y': this.initialPoint.y + 1000 - }); - - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.path).not.toBeNull(); - expect(overlay.onDrawFinish.calls.count()).toEqual(0); - - this.rectangle.onMouseUp(event, overlay); - - expect(overlay.onDrawFinish.calls.count()).toEqual(1); - - overlay.mode = ''; - overlay.onDrawFinish.calls.reset(); - - this.rectangle.onMouseUp(event, overlay); - - expect(overlay.onDrawFinish.calls.count()).toEqual(0); - }); - - it('should select point[5] deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - }); - overlay.mode = ''; - - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[5]); - expect(overlay.path).toBe(this.shape); - }); - - it('should select point[4] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - 1 - }); - overlay.mode = ''; - - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[4]); - expect(overlay.path).toBe(this.shape); - }); - - it('should select point[3] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x, - 'y': this.initialPoint.y - 2 - }); - - overlay.mode = ''; - - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[3]); - expect(overlay.path).toBe(this.shape); - }); - - it('should select point[1] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - 2 - }); - overlay.mode = ''; - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[1]); - expect(overlay.path).toBe(this.shape); - }); - - it('should select point[0] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 2, - 'y': this.initialPoint.y - 2 - }); - overlay.mode = ''; - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[0]); - expect(overlay.path).toBe(this.shape); - - }); - - it('should select point[6] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 1, - 'y': this.initialPoint.y - }); - overlay.mode = ''; - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[6]); - expect(overlay.path).toBe(this.shape); - - }); - - it('should select point[7] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 2, - 'y': this.initialPoint.y - }); - overlay.mode = ''; - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[7]); - expect(overlay.path).toBe(this.shape); - - }); - - it('should select point[8] to deform rectangular', function() { - - var event = TestUtils.getEvent({}, { - 'x': this.initialPoint.x - 2, - 'y': this.initialPoint.y - 1 - }); - overlay.mode = ''; - this.rectangle.onMouseDown(event, overlay); - - expect(overlay.mode).toBe('deform'); - expect(overlay.segment).toBe(this.shape.segments[8]); - expect(overlay.path).toBe(this.shape); - - }); - - it('should change cursor to move when stroke is hit',function(){ - var hitResult = { - type:'stroke' - }; - - overlay.viewer.canvas = this.canvas; - this.rectangle.setCursor(hitResult,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('move'); - }); - - // it('should change cursor to pointer when hovering delete icon',function(){ - // - // - // }); - - it('should change cursor on mouse move',function(){ - var event = TestUtils.getEvent({},{ - x: this.initialPoint.x, - y: this.initialPoint.y - }); - overlay.viewer.canvas = this.canvas; - overlay.hoveredPath = this.shape; - this.rectangle.onMouseMove(event,overlay); - - expect(jQuery(overlay.viewer.canvas).css('cursor')).toBe('pointer'); - }); - - it('should not update selection if the item is part of selected shape',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.rectangle.idPrefix + _this.rectangle.partOfPrefix; - } - } - }; - this.rectangle.updateSelection(true,item,overlay); - expect(item.selected).toBeUndefined(); - }); - - it('should adapt segments (old rects have different pivot points)',function(){ - - this.rectangle.adaptSegments(this.shape); - expect(this.shape.segments[1].point.x).toBe(this.shape.segments[2].point.x); - expect(this.shape.segments[1].point.y).toBe(this.shape.segments[2].point.y); - - }); - - it('should resize the trash can icon',function(){ - var _this = this; - var item = { - '_name':{ - toString:function(){ - return _this.rectangle.idPrefix + _this.rectangle.partOfPrefix + 'delete'; - } - }, - data:{ - self:new overlay.annotationUtils.DeleteActionIcon(), - parent:{ // should use mock shape - data:{ - rotation:1 - }, - contains:jasmine.createSpy().and.returnValue(true) - } - } - }; - - this.rectangle.onResize(item,overlay); - - expect(item.data.self.resize).toHaveBeenCalledWith(24); - expect(item.data.self.rotate).toHaveBeenCalledWith(180); - }); - - }); - -}); diff --git a/spec/annotations/overlay.stub.js b/spec/annotations/overlay.stub.js deleted file mode 100644 index 71977f773caf785b45e8c166c33ad563fcdab390..0000000000000000000000000000000000000000 --- a/spec/annotations/overlay.stub.js +++ /dev/null @@ -1,41 +0,0 @@ -(function () { - window.MockOverlay = { - getOverlay: function (paperScope) { - return { - viewer: { - canvas: '', - }, - paperScope: paperScope, - strokeColor: 'red', - fillColor: 'red', - fillColorAlpha: 1.0, - mode: '', - path: null, - segment: null, - viewZoom: 1, - hitOptions: { - stroke:true, - handles: true, - segments: true, - tolerance: 0 - }, - selectedColor:'red', - fitFixedSizeShapes: jasmine.createSpy(), - fixedShapeSize: 5, - annotationUtils: new AnnotationUtilsStub(), - state: { - getStateProperty: jasmine.createSpy() - }, - onDrawFinish: jasmine.createSpy(), - getName: function (tool) { - return tool.idPrefix + '1'; - }, - show: jasmine.createSpy(), - hide: jasmine.createSpy(), - disable: jasmine.createSpy(), - destroy: jasmine.createSpy(), - restoreEditedShapes: jasmine.createSpy() - } - } - } -})(); diff --git a/spec/annotations/simple-as-endpoint.test.js b/spec/annotations/simple-as-endpoint.test.js deleted file mode 100644 index 56bb3dafe99abb1ba60f173e7d80a7de6b1bc3b5..0000000000000000000000000000000000000000 --- a/spec/annotations/simple-as-endpoint.test.js +++ /dev/null @@ -1,211 +0,0 @@ -describe('SimpleASEndpoint', function() { - var subject, ajaxSuccess, ajaxData, endpointOpts; - - beforeEach(function() { - this.dfd = jQuery.Deferred(); - endpointOpts = { - url:'test', - userid:'1', - dfd: this.dfd - }; - this.endpoint = new Mirador.SimpleASEndpoint(endpointOpts); - subject = this.endpoint; - ajaxSuccess = true; - ajaxData = null; - spyOn(jQuery, 'ajax').and.callFake(function(args) { - if (ajaxSuccess) { - if (typeof args.success === 'function') args.success(ajaxData); - } - else { - if (typeof args.error === 'function') args.error(ajaxData); - } - }); - }); - - afterEach(function() { - delete this.endpoint; - }); - - describe('Initialization', function() { - it('should initialize', function() { - - expect(this.endpoint.catchOptions).toBeDefined(); - expect(this.endpoint.catchOptions.user.id).toBe(endpointOpts.userid); - - expect(this.endpoint.catchOptions.permissions.read.length).toBe(0); - expect(this.endpoint.catchOptions.permissions.update).toContain(endpointOpts.userid); - expect(this.endpoint.catchOptions.permissions.delete).toContain(endpointOpts.userid); - expect(this.endpoint.catchOptions.permissions.admin).toContain(endpointOpts.userid); - }); - }); - - describe('search', function() { - var successCallback, errorCallback, genUuidCounter; - beforeEach(function() { - successCallback = jasmine.createSpy('successCallback'); - errorCallback = jasmine.createSpy('errorCallback'); - subject.annotationsList = []; - ajaxData = [ - { '@id': 'AAA' }, - { '@id': 'BBB' } - ]; - genUuidCounter = 0; - spyOn(Mirador, 'genUUID').and.callFake(function() { - return 'uuid' + genUuidCounter++; - }); - }); - it('should run callback on success if provided', function() { - subject.search({}, successCallback, errorCallback); - expect(successCallback).toHaveBeenCalledWith(ajaxData); - expect(errorCallback).not.toHaveBeenCalled(); - }); - it('should update internal annotation list if provided', function() { - expect(subject.dfd.state()).not.toEqual('resolved'); - subject.search({}); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(subject.dfd.state()).toEqual('resolved'); - expect(subject.annotationsList).toEqual(ajaxData); - expect(subject.idMapper.uuid0).toEqual('AAA'); - expect(subject.idMapper.uuid1).toEqual('BBB'); - }); - it('should add console log on failure with no callback given', function() { - ajaxSuccess = false; - spyOn(console, 'log'); - subject.search({uri: "http://sas.example.net"}); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).not.toHaveBeenCalled(); - expect(console.log).toHaveBeenCalledWith("The request for annotations has caused an error for endpoint: http://sas.example.net due to undefined"); - }); - it('should run callback on failure if provided', function() { - ajaxSuccess = false; - subject.search({}, successCallback, errorCallback); - expect(successCallback).not.toHaveBeenCalled(); - expect(errorCallback).toHaveBeenCalled(); - }); - }); - - describe('deleteAnnotations', function() { - var returnSuccess, returnError; - beforeEach(function() { - subject.idMapper = { - 'uuid0': 'AAA', - 'uuid1': 'BBB' - }; - subject.annotationsList = [ - { '@id': 'AAA' }, - { '@id': 'BBB' } - ]; - returnSuccess = jasmine.createSpy('returnSuccess'); - returnError = jasmine.createSpy('returnError'); - }); - it('should run callback on success', function() { - subject.deleteAnnotation('uuid0', returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/destroy?uri=AAA&APIKey=" + subject.APIKey, - type: 'DELETE' - })); - expect(returnSuccess).toHaveBeenCalled(); - expect(returnError).not.toHaveBeenCalled(); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.deleteAnnotation('uuid1', returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/destroy?uri=BBB&APIKey=" + subject.APIKey, - type: 'DELETE' - })); - expect(returnSuccess).not.toHaveBeenCalled(); - expect(returnError).toHaveBeenCalled(); - }); - }); - - describe('update', function() { - var returnSuccess, returnError, oaAnnotation; - beforeEach(function() { - returnSuccess = jasmine.createSpy('returnSuccess'); - returnError = jasmine.createSpy('returnError'); - oaAnnotation = { - '@id': 'uuid0', - fullId: 'AAA', - endpoint: {} - }; - }); - it('should run callback on success', function() { - subject.update(oaAnnotation, returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/update?APIKey=" + subject.APIKey, - type: 'POST' - })); - expect(returnSuccess).toHaveBeenCalled(); - expect(returnError).not.toHaveBeenCalled(); - expect(oaAnnotation.endpoint).toEqual(subject); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.update(oaAnnotation, returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/update?APIKey=" + subject.APIKey, - type: 'POST' - })); - expect(returnSuccess).not.toHaveBeenCalled(); - expect(returnError).toHaveBeenCalled(); - }); - }); - - describe('create', function() { - var returnSuccess, returnError, oaAnnotation; - beforeEach(function() { - returnSuccess = jasmine.createSpy('returnSuccess'); - returnError = jasmine.createSpy('returnError'); - oaAnnotation = { - fullId: 'AAA', - endpoint: {} - }; - }); - it('should run callback on success', function() { - ajaxData = { - '@id': 'nuevo', - }; - subject.create(oaAnnotation, returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/create?APIKey=" + subject.APIKey, - type: 'POST' - })); - expect(returnSuccess).toHaveBeenCalledWith(ajaxData); - expect(returnError).not.toHaveBeenCalled(); - expect(ajaxData.endpoint).toEqual(subject); - }); - it('should run callback on failure', function() { - ajaxSuccess = false; - subject.create(oaAnnotation, returnSuccess, returnError); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - url: subject.url + "/create?APIKey=" + subject.APIKey, - type: 'POST' - })); - expect(returnSuccess).not.toHaveBeenCalled(); - expect(returnError).toHaveBeenCalled(); - }); - }); - - describe('set', function() { - it('should set the property to the value with 2 arguments', function() { - subject.set('waahoo', 'xekko'); - expect(subject.waahoo).toEqual('xekko'); - }); - it('should set the sub-property to the value with 3 arguments', function() { - subject.set(0, 'xekko', { parent: 'annotationsList' }); - expect(subject.annotationsList[0]).toEqual('xekko'); - }) - }); - - describe('userAuthorize', function() { - it('should let everyone through for now', function() { - expect(subject.userAuthorize('read', {})).toBe(true); - expect(subject.userAuthorize('create', {})).toBe(true); - expect(subject.userAuthorize('update', {})).toBe(true); - expect(subject.userAuthorize('delete', {})).toBe(true); - expect(subject.userAuthorize('admin', {})).toBe(true); - }); - }); -}); diff --git a/spec/annotations/test-utils.js b/spec/annotations/test-utils.js deleted file mode 100644 index e387a70b574059c898d7521251d29d950f3b630e..0000000000000000000000000000000000000000 --- a/spec/annotations/test-utils.js +++ /dev/null @@ -1,18 +0,0 @@ -(function () { - window.TestUtils = { - rotatePoint: function (point, initialPoint, angle) { - var angleRad = angle * Math.PI / 180.0; - return { - x: Math.cos(angleRad) * (point.x - initialPoint.x) - Math.sin(angleRad) * (point.y - initialPoint.y) + initialPoint.x, - y: Math.sin(angleRad) * (point.x - initialPoint.x) + Math.cos(angleRad) * (point.y - initialPoint.y) + initialPoint.y - }; - }, - getEvent: function (delta, point,modifiers) { - return { - 'delta': delta, - 'point': point, - 'modifiers': modifiers - }; - } - } -})(); \ No newline at end of file diff --git a/spec/annotations/tinymce-annotation-editor.test.js b/spec/annotations/tinymce-annotation-editor.test.js deleted file mode 100644 index e8c8d7105fd35fc5f74661aa6cafe88722cf9b79..0000000000000000000000000000000000000000 --- a/spec/annotations/tinymce-annotation-editor.test.js +++ /dev/null @@ -1,252 +0,0 @@ -describe('TinyMCEAnnotationBodyEditor', function() { - var subject; - beforeEach(function() { - jQuery('body').append('<div id="mycontainer"></div>'); - tinymce = jasmine.createSpyObj('tinymce', ['init']); - this.sandbox = jQuery('#mycontainer'); - this.annotation = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>Waahoo</p>" - }, - { - "@type": "oa:Tag", - "chars": "tagged" - }, - { - "@type": "oa:Tag", - "chars": "silly" - }, - ], - "on": [{ - "@type": "oa:SpecificResource", - "full": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567/canvas/canvas-10466656.json", - "selector": { - "@type": "oa:Choice", - "default": { - "@type": "oa:FragmentSelector", - "value": "xywh=1000,219,198,148" - }, - "item": { - "@type": "oa:SvgSelector", - "value": "<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"strokeWidth":1,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>" - } - }, - "within": { - "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567", - "@type": "sc:Manifest" - } - }], - "@id": "51ac4477-7bcc-475d-a7bb-26112db1c230" - }; - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.tinyMce = new Mirador.TinyMCEAnnotationBodyEditor({ - annotation: this.annotation, - windowId: this.windowId, - config: { - tags: ["config1", "config2"] - } - }); - subject = this.tinyMce; - subject.show('#mycontainer'); - }); - - afterEach(function() { - delete this.tinyMce; - $('body').html(''); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - expect(this.sandbox.find('.text-editor').val()).toEqual('<p>Waahoo</p>'); - expect(this.sandbox.find('.tags-editor').val()).toEqual(['tagged', 'silly']); - }); - it('should initialize with legacy annotations', function() { - this.annotation.resource = { - "@type": "dctypes:Text", - "format": "text/plain", - "chars": "Old stuff" - }; - var legacyTinyMce = new Mirador.TinyMCEAnnotationBodyEditor({ - annotation: this.annotation, - windowId: this.windowId - }); - legacyTinyMce.show('#mycontainer'); - expect(this.sandbox.find('.text-editor').val()).toEqual('Old stuff'); - }); - }); - - describe('isDirty', function() { - var dirty; - beforeEach(function() { - tinymce.activeEditor = { - isDirty: jasmine.createSpy('isDirty').and.callFake(function() { - return dirty; - }) - }; - }); - it('should return dirtiness when true', function() { - dirty = true; - expect(subject.isDirty()).toBe(true); - }); - it('should return dirtiness when false', function() { - dirty = false; - expect(subject.isDirty()).toBe(false); - }); - }); - - describe('createAnnotation', function() { - beforeEach(function() { - var _this = this; - tinymce.activeEditor = { - getContent: jasmine.createSpy('getContent').and.callFake(function() { - return _this.sandbox.find('.text-editor').val(); - }) - }; - }); - it('should create a full annotation with tags from config', function() { - this.sandbox.find('.text-editor').val('Sample annotation'); - this.sandbox.find('.tags-editor').val(['config1', 'config2']).trigger('change'); - expect(subject.createAnnotation()).toEqual({ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:tagging', 'oa:commenting'], - "resource": [ - { - "@type": "oa:Tag", - "chars": "config1" - }, - { - "@type": "oa:Tag", - "chars": "config2" - }, - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation" - } - ] - }); - }); - - it('should create a full annotation with new tags', function() { - this.sandbox.find('.text-editor').val('Sample annotation'); - this.sandbox.find('.tags-editor').append('<option value="tag">tag</option>'); - this.sandbox.find('.tags-editor').append('<option value="nags">nags</option>'); - this.sandbox.find('.tags-editor').val(['tag', 'nags']).trigger('change'); - expect(subject.createAnnotation()).toEqual({ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:tagging', 'oa:commenting'], - "resource": [ - { - "@type": "oa:Tag", - "chars": "tag" - }, - { - "@type": "oa:Tag", - "chars": "nags" - }, - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation" - } - ] - }); - }); - }); - - describe('updateAnnotation', function() { - beforeEach(function() { - var _this = this; - tinymce.activeEditor = { - getContent: jasmine.createSpy('getContent').and.callFake(function() { - return _this.sandbox.find('.text-editor').val(); - }) - }; - }); - it('should update the given annotation with new tags', function() { - var oaAnno = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:commenting'], - "resource": [{ - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation" - }] - }; - this.sandbox.find('.text-editor').val('Sample annotation 2'); - this.sandbox.find('.tags-editor').append('<option value="tag2">tag2</option>'); - this.sandbox.find('.tags-editor').append('<option value="nags2">nags2</option>'); - this.sandbox.find('.tags-editor').val(['tag2', 'nags2']).trigger('change'); - subject.updateAnnotation(oaAnno); - expect(oaAnno).toEqual({ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:commenting', 'oa:tagging'], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation 2" - }, - { - "@type": "oa:Tag", - "chars": "tag2" - }, - { - "@type": "oa:Tag", - "chars": "nags2" - } - ] - }); - }); - - it('should update the given annotation with tags from config', function() { - var oaAnno = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:commenting'], - "resource": [{ - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation" - }] - }; - this.sandbox.find('.text-editor').val('Sample annotation 2'); - this.sandbox.find('.tags-editor').val(['config1', 'config2']).trigger('change'); - subject.updateAnnotation(oaAnno); - expect(oaAnno).toEqual({ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": ['oa:commenting', 'oa:tagging'], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "Sample annotation 2" - }, - { - "@type": "oa:Tag", - "chars": "config1" - }, - { - "@type": "oa:Tag", - "chars": "config2" - } - ] - }); - }); - - }); -}); diff --git a/spec/data/Walters/bd183mz0176/manifest.json b/spec/data/Walters/bd183mz0176/manifest.json deleted file mode 100644 index e58579836a614fd48d2f3869a73f28f08a73e03e..0000000000000000000000000000000000000000 --- a/spec/data/Walters/bd183mz0176/manifest.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "@context": "http://www.shared-canvas.org/ns/context.json", - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/manifest.json", - "@type": "sc:Manifest", - "label": "Walters MS 688", - "agent": "", - "date": "Early 11th century AH / 17th CE", - "description": "This manuscript illustration of a group\n of youths before a king and his courtiers was executed in Iran during the early\n eleventh century AH / seventeenth CE. Stylistically it relates to manuscript\n production in Shiraz in the tenth century AH / sixteenth CE and early eleventh\n century AH / seventeenth CE. The painting is framed by illuminated borders in\n tones of gold. The back of the leaf has additional illumination and no\n text. For full description, see http://www.thedigitalwalters.org/Data/WaltersManuscripts/html/W688/description.html", - "attribution": "Provided by the Walters Art Museum, Baltimore, MD", - "license": "Licensed for use under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Access Rights, http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode. Images are free for any noncommercial use, provided you follow the terms of this license. You do not need to apply to the Walters prior to using the images. We ask only that you cite the source of the images as the Walters Art Museum (see citation style at http://www.thedigitalwalters.org/03_ReadMe.html). Additionally, we request that a copy of any work created using these materials be sent to the Curator of Manuscripts and Rare Books at the Walters Art Museum, 600 N. Charles Street, Baltimore, MD 21201, mss-curator@thewalters.org.", - "seeAlso": { - "@id": "http://purl.stanford.edu/bd183mz0176.mods", - "profile": "application/mods+xml" - }, - "within": "http://dms-data.stanford.edu/Walters/", - "sequences": [ - { - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/normal", - "@type": "sc:Sequence", - "label": "Current page order", - "canvases": [ - { - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/canvas/canvas-1", - "@type": "sc:Canvas", - "label": "fol. W.688a", - "height": 4851, - "width": 3071, - "resources": [ - { - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/imageanno/anno-1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://stacks.stanford.edu/image/bd183mz0176/W688_000001_300", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 4851, - "width": 3071, - "service": { - "@id": "https://stacks.stanford.edu/image/iiif/bd183mz0176%252FW688_000001_300", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1" - } - }, - "on": "http://dms-data.stanford.edu/Walters/bd183mz0176/canvas/canvas-1" - } - ] - }, - { - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/canvas/canvas-2", - "@type": "sc:Canvas", - "label": "fol. W.688b", - "height": 4817, - "width": 3038, - "resources": [ - { - "@id": "http://dms-data.stanford.edu/Walters/bd183mz0176/imageanno/anno-2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://stacks.stanford.edu/image/bd183mz0176/W688_000002_300", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 4817, - "width": 3038, - "service": { - "@id": "https://stacks.stanford.edu/image/iiif/bd183mz0176%252FW688_000002_300", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1" - } - }, - "on": "http://dms-data.stanford.edu/Walters/bd183mz0176/canvas/canvas-2" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/spec/data/manifest.json b/spec/data/manifest.json deleted file mode 100644 index 0f1f58d7d88d70f8f31d970165dc43f72fb4ed88..0000000000000000000000000000000000000000 --- a/spec/data/manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"@context":"http://iiif.io/api/presentation/2/context.json","@id":"https://sul-purl-test.stanford.edu/ck546xs5106/iiif/manifest.json","@type":"sc:Manifest","label":"Ege No. 1 - University of Mississippi","attribution":"Provided by the Stanford University Libraries", "logo":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/300,/0/default.jpg","seeAlso":{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106.mods","format":"application/mods+xml"},"thumbnail":{"@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/400,/0/default.jpg","service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1","profile":"http://iiif.io/api/image/2/level1.json"}},"sequences":[{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106/sequence-1","@type":"sc:Sequence","label":"Current order","canvases":[{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-1","@type":"sc:Canvas","label":"Image 1","height":1545,"width":1162,"images":[{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106/imageanno/anno-1","@type":"oa:Annotation","motivation":"sc:painting","on":"https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-1","resource":{"@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/full/0/default.jpg","@type":"dcterms:Image","format":"image/jpeg","height":1545,"width":1162,"service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1","profile":"http://iiif.io/api/image/2/level1.json"}}}]},{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-2","@type":"sc:Canvas","label":"Image 2","height":1548,"width":1149,"images":[{"@id":"https://sul-purl-test.stanford.edu/ck546xs5106/imageanno/anno-2","@type":"oa:Annotation","motivation":"sc:painting","on":"https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-2","resource":{"@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1v/full/full/0/default.jpg","@type":"dcterms:Image","format":"image/jpeg","height":1548,"width":1149,"service":{"@context":"http://iiif.io/api/image/2/context.json","@id":"https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1v","profile":"http://iiif.io/api/image/2/level1.json"}}}]}]}]} \ No newline at end of file diff --git a/spec/data/manifest2.json b/spec/data/manifest2.json deleted file mode 100644 index 8d7f5e70f6ec651970bc8a2bc976df0ea6e6c19e..0000000000000000000000000000000000000000 --- a/spec/data/manifest2.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "spec/data/manifest2.json", - "@type": "sc:Manifest", - "label": "Ege No. 1 - University of Mississippi", - "attribution": "Provided by the Stanford University Libraries", - "logo": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/302,/0/default.jpg", - "seeAlso": { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106.mods", - "format": "application/mods+xml" - }, - "thumbnail": { - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/400,/0/default.jpg", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "sequences": [ - { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106/sequence-1", - "@type": "sc:Sequence", - "label": "Current order", - "canvases": [ - { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-1", - "@type": "sc:Canvas", - "label": "Image 1", - "height": 1545, - "width": 1162, - "images": [ - { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106/imageanno/anno-1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-1", - "resource": { - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/full/0/default.jpg", - "@type": "dcterms:Image", - "format": "image/jpeg", - "height": 1545, - "width": 1162, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - } - } - ] - }, - { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-2", - "@type": "sc:Canvas", - "label": "Image 2", - "height": 1548, - "width": 1149, - "images": [ - { - "@id": "https://sul-purl-test.stanford.edu/ck546xs5106/imageanno/anno-2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "https://sul-purl-test.stanford.edu/ck546xs5106/canvas/canvas-2", - "resource": { - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1v/full/full/0/default.jpg", - "@type": "dcterms:Image", - "format": "image/jpeg", - "height": 1548, - "width": 1149, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1v", - "profile": "http://iiif.io/api/image/2/level1.json" - } - } - } - ] - } - ] - } - ] -} diff --git a/spec/event-emitter.stub.js b/spec/event-emitter.stub.js deleted file mode 100644 index 8bb801cf126a3cfa7b8b14779ba36f789ddf4317..0000000000000000000000000000000000000000 --- a/spec/event-emitter.stub.js +++ /dev/null @@ -1,27 +0,0 @@ -(function () { - window.MockEventEmitter = function (eventEmitter) { - this.events = {}; - this.eventEmmiter = eventEmitter; - }; - - window.MockEventEmitter.prototype = { - subscribe: function (eventName, callback) { - if(this.events[eventName]){ - this.events[eventName]++; - }else{ - this.events[eventName] = 1; - } - return this.eventEmmiter.subscribe(eventName,callback); - }, - publish: function (eventName,args) { - this.eventEmmiter.publish(eventName,args); - - }, - unsubscribe: function (eventName) { - this.eventEmmiter.unsubscribe(eventName); - if(this.events[eventName]){ - this.events[eventName]--; - } - } - } -})(); \ No newline at end of file diff --git a/spec/fixtures/AnGWay.json b/spec/fixtures/AnGWay.json deleted file mode 100644 index 58485a8dfa8d6c0fe4e724f63912ac3b564df41b..0000000000000000000000000000000000000000 --- a/spec/fixtures/AnGWay.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://wellcomelibrary.org/service/collections/authors/A.%20%26%20G.%20Way%20(Firm)%2C/", - "@type": "sc:Collection", - "label": " Author: A. & G. Way (Firm)", - "manifests": [ - { - "@id": "http://wellcomelibrary.org/iiif/b21153577/manifest", - "@type": "sc:Manifest", - "label": "A practical narrative of the autumnal epidemic fever which prevailed in Philadelphia in the year 1803", - "thumbnail": { - "@id": "https://dlcs.io/iiif-img/2/1/9b9fd335-eefa-4fa8-9f44-9516ed6d6fea/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/2/1/9b9fd335-eefa-4fa8-9f44-9516ed6d6fea", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "related": { - "@id": "http://wellcomelibrary.org/item/b21153577", - "format": "text/html" - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/resource/b21153577", - "format": "text/turtle" - } - }, - { - "@id": "http://wellcomelibrary.org/iiif/b2115658x/manifest", - "@type": "sc:Manifest", - "label": "Observations on the disease of gonorrhoea :", - "thumbnail": { - "@id": "https://dlcs.io/iiif-img/2/1/9e2ea00c-1e74-4092-aa43-1a918694b762/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/2/1/9e2ea00c-1e74-4092-aa43-1a918694b762", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "related": { - "@id": "http://wellcomelibrary.org/item/b2115658x", - "format": "text/html" - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/resource/b2115658x", - "format": "text/turtle" - } - } - ] -} \ No newline at end of file diff --git a/spec/fixtures/BNF-condorcet-florus-dispersus-manifest.json b/spec/fixtures/BNF-condorcet-florus-dispersus-manifest.json deleted file mode 100644 index ff9a1029b3ebb404e7324a8efbc2a3070bc2266c..0000000000000000000000000000000000000000 --- a/spec/fixtures/BNF-condorcet-florus-dispersus-manifest.json +++ /dev/null @@ -1,7984 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/manifest.json", - "@type": "sc:Manifest", - "label": "Codex Florus dispersus", - "metadata": [ - { - "label":"Object type", - "value":"Manuscrit dispersé" - }, - { - "label": "Repository", - "value": [ - "Paris, Bibliothèque nationale de France", - "Genève, Bibliothèque de Genève", - "Saint-Pétersbourg, Bibliothèque nationale de Russie" - ] - }, - { - "label": "Shelfmark", - "value": [ - "BnF, Latin 11641", - "BGE, Latin 16", - "BnR, Latin F.papyr.I.1" - ] - }, - { - "label": "Title", - "value": "Épîtres et sermons de saint Augustin" - }, - { - "label": "Language", - "value": "Latin" - }, - { - "label": "Material", - "value": "Parchemin et papyrus" - }, - { - "label": "Extent", - "value": [ - "300 f. (lacunes comprises)", - "63 f. de Paris", - "53 f. de Genève", - "1 f. de Saint-Pétersbourg" - ] - }, - { - "label": "Dimensions", - "value": "320 x 220 mm" - }, - { - "label": "Provenance", - "value": "Luxeuil ou Lyon (?)" - }, - { - "label": "Creator", - "value": [ - "Saint Augustin. Auteur du texte", - "Florus de Lyon. Annotateur" - ] - }, - { - "label": "Date", - "value": "VIIe/VIIIe siècle" - }, - { - "label": "Provider", - "value": [ - "Paris, Bibliothèque nationale de France", - "Genève, Bibliothèque de Genève", - "Saint-Pétersbourg, Bibliothèque nationale de Russie" - ] - }, - { - "label": "Disseminator", - "value": "Biblissima" - }, - { - "label": "Source Images", - "value": [ - "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/", - "http://www.e-codices.unifr.ch/en/list/one/bge/lat0016", - "http://www.e-codices.unifr.ch/en/list/one/nlr/lat-F-I-1" - ] - } - ], - "description": "Le \"Florus dispersus\" contient une reconstruction virtuelle d'un manuscrit des lettres et des sermons d'Augustin dans la succession originelle des parties conservées. Il a été rédigé dans une écriture onciale par un copiste de la fin du VIIe siècle, respectivement du début du VIIIe siècle. A l'origine, il se composait de 300 feuillets, dont il reste encore aujourd'hui 117. Une partie de 63 feuillets, provenant des cahiers d'origine 4-11, se trouve aujourd'hui à Paris (BnF, lat. 11641); dans cette partie, peut être inséré, après le feuillet 26, un feuillet isolé, aujourd'hui conservé à Saint-Pétersbourg (BNR, Lat.F.papyr. I.1). Une autre partie de 53 feuillets provenant des cahiers d'origine 23-30 est aujourd'hui conservée à Genève (BGE, lat. 16). Le feuillet extérieur de chaque cahier (quinion) se compose à chaque fois d'un feuillet de parchemin, les autres sont en papyrus. Il s'agit du plus ancien exemple connu de manuscrit mêlant le parchemin et le papyrus. Durant le IXe siècle, le manuscrit appartenait à la bibliothèque de Florus de Lyon, qui y a inséré de sa main de nombreuses notes marginales. Dans la reconstruction virtuelle proposée, nous avons choisi de représenter la structure codicologique du manuscrit original et de signaler les lacunes aux endroits où elles se sont produites. Toutefois, ne sont représentés que les cahiers ayant au moins un feuillet conservé, c'est-à-dire les cahiers 4 à 11 et 23 à 30. Une navigation par œuvre est disponible à l'intérieur d'un cahier. Les feuillets mal placés dans les manuscrits actuels ont été remis dans l\u2019ordre original, à savoir: Paris fol. 1 et 2 ont été intervertis, Genève fol. 2a a été placé entre les feuillets Genève fol. 1 et 2, Genève fol. 9 - entre les feuillets Genève fol. 13 et 14, Genève fol. 45 - entre les feuillets Genève fol. 49 et 50. La foliotation présumée du manuscrit original est indiquée entre parenthèses après les folios des manuscrits actuels.", - "license": ["http://creativecommons.org/licenses/by-nc/4.0/", "http://gallica.bnf.fr/html/und/conditions-dutilisation-des-contenus-de-gallica"], - "attribution": "Reconstruction virtuelle: Pierre Chambert-Protat / Manifest IIIF: Elena Koroleva / Images: e-codices - Virtual Manuscript Library of Switzerland ; Gallica - Bibliothèque nationale de France", - "structures": [ - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r0", - "@type": "sc:Range", - "label": "Table of Contents", - "viewingHint": "top", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1", - "@type": "sc:Range", - "label": "Cahier IV", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-3" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f13", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f14", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-7", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-8", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-9", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-10", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-11", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-12", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-13", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-14", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-15", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-16", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f11", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f12" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-1", - "@type": "sc:Range", - "label": "Minuscule frg. du 1er f. du 4e cahier", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f13", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f14" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-7", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-8", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-9", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-10", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-11", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-12", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-13", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-14", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-15", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-16" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r1-3", - "@type": "sc:Range", - "label": "Épitre 27, 4-6 d'Augustin (f.1r-v, 3r-v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f11", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f12" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2", - "@type": "sc:Range", - "label": "Cahier V", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-7" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f15", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f16", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f17", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f18", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f19", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f20", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f21", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f22", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-17", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-18", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-19", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-20", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f23", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f24", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f25", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f26", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f27", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f28", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f29", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f30" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-1", - "@type": "sc:Range", - "label": "Épitre 27, 4-6 d'Augustin (f.1r-v, 3r-v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f15", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f16" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-2", - "@type": "sc:Range", - "label": "Épitre 31, 1-6 d'Augustin (f. 3v-6v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f16", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f17", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f18", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f19", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f20", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f21", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f22" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-3", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-17", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-18", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-19", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-20" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-4", - "@type": "sc:Range", - "label": "Épitre 24 d'Augustin (f. 7r-8v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f23", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f24", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f25", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f26" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-5", - "@type": "sc:Range", - "label": "Épitre 42 d'Augustin (f. 8v-9r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f26", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f27" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-6", - "@type": "sc:Range", - "label": "Épitre 45 d'Augustin (f. 9r-10r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f27", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f28", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f29" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r2-7", - "@type": "sc:Range", - "label": "Épitre 94 d'Augustin (f. 10r-15v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f29", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f30" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3", - "@type": "sc:Range", - "label": "Cahier VI", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-7" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f31", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f32", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f33", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f34", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f35", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f36", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f37", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f38", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f39", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f40", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-21", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-22", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f41", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f42", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f43", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f44", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f45", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f46", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f47", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f48", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f49", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f50" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-1", - "@type": "sc:Range", - "label": "Épitre 94 d'Augustin (f. 10r-15v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f31", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f32", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f33", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f34", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f35", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f36", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f37", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f38", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f39", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f40" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-21", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-22" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-3", - "@type": "sc:Range", - "label": "Ex epistolis du Pseudo-Augustin (f. 16r-18v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f41", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f42", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f43", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f44" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-4", - "@type": "sc:Range", - "label": "Bande sans texte entre 17v et 18r (le reste de la marge du f. manquant?)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f45", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f46" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-5", - "@type": "sc:Range", - "label": "Ex epistolis du Pseudo-Augustin (f. 16r-18v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f47", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f48" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-6", - "@type": "sc:Range", - "label": "Épitre 260 d'Augustin (f. 18v-19r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f48", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f49" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r3-7", - "@type": "sc:Range", - "label": "Épitre 261, 1-4 d'Augustin (f. 19r-20v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f49", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f50" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4", - "@type": "sc:Range", - "label": "Cahier VII", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-5" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f51", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f52", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-23", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-24", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-25", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-26", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f53", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f54", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f55", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f56", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f57", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f58", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f59", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f60", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-27", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-28", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-29", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-30", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f61", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f62" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-1", - "@type": "sc:Range", - "label": "Épitre 261, 1-4 d'Augustin (f. 19r-20v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f51", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f52" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-23", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-24", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-25", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-26" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-3", - "@type": "sc:Range", - "label": "Sermon 351 d'Augustin, De utilitate agendae paenitentiae (f. 21r-34r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f53", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f54", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f55", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f56", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f57", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f58", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f59", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f60" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-4", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-27", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-28", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-29", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-30" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r4-5", - "@type": "sc:Range", - "label": "Sermon 351 d'Augustin, De utilitate agendae paenitentiae (f. 21r-34r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f61", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f62" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5", - "@type": "sc:Range", - "label": "Cahier VIII", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-3" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f63", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f64", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_a.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_b.json", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f65", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f66", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f67", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f68", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f69", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f70", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f71", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f72", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f73", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f74", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f75", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f76", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-31", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-32", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f77", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f78" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-1", - "@type": "sc:Range", - "label": "Sermon 351 d'Augustin, De utilitate agendae paenitentiae (f. 21r-34r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f63", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f64", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_a.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_b.json", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f65", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f66", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f67", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f68", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f69", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f70", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f71", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f72", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f73", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f74", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f75", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f76" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-31", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-32" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r5-3", - "@type": "sc:Range", - "label": "Sermon 351 d'Augustin, De utilitate agendae paenitentiae (f. 21r-34r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f77", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f78" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6", - "@type": "sc:Range", - "label": "Cahier IX", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-4" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f79", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f80", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f81", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f82", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f83", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f84", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f85", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f86", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f87", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f88", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f89", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f90", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f91", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f92", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f93", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f94", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f95", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f96", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f97", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f98" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-1", - "@type": "sc:Range", - "label": "Sermon 351 d'Augustin, De utilitate agendae paenitentiae (f. 21r-34r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f79" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-2", - "@type": "sc:Range", - "label": "Sermon 392 d'Augustin, Ad coniugatos (f. 34r-37v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f79", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f80", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f81", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f82", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f83", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f84", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f85", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f86" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-3", - "@type": "sc:Range", - "label": "De vetere testamento, Sermon 18, De versu psalmi 49 (f. 38r-42r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f87", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f88", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f89", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f90", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f91", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f92", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f93", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f94", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f95" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r6-4", - "@type": "sc:Range", - "label": "In Matthaeum, Sermon 87 d'Augustin (f. 42r-53r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f95", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f96", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f97", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f98" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7", - "@type": "sc:Range", - "label": "Cahier X", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7-2" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f99", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f100", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f101", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f102", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f103", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f104", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f105", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f106", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f107", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f108", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f109", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f110", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f111", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f112", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f113", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f114", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f115", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f116", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f117", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f118" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7-1", - "@type": "sc:Range", - "label": "In Matthaeum, Sermon 87 d'Augustin (f. 42r-53r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f99", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f100", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f101", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f102", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f103", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f104", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f105", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f106", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f107", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f108", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f109", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f110", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f111", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f112", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f113", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f114", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f115", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f116", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f117" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r7-2", - "@type": "sc:Range", - "label": "In Matthaeum, Sermon 77 d'Augustin (f. 53r-62r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f117", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f118" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8", - "@type": "sc:Range", - "label": "Cahier XI", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8-2" - ], - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f119", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f120", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f121", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f122", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f123", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f124", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f125", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f126", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f127", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f128", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f129", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f130", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f131", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f132", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f133", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f134", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f135", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f136", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f137", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f138" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8-1", - "@type": "sc:Range", - "label": "In Matthaeum, Sermon 77 d'Augustin (f. 53r-62r)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f119", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f120", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f121", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f122", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f123", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f124", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f125", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f126", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f127", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f128", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f129", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f130", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f131", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f132", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f133", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f134", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f135" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r8-2", - "@type": "sc:Range", - "label": "In Iohannem, Sermon 127 d'Augustin (f. 62v-63v)", - "canvases": [ - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f136", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f137", - "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f138" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9", - "@type": "sc:Range", - "label": "Cahier XXIII", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-4" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002ar.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002av.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-33", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-34", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-35", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-36", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-37", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-38", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-39", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-40", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-41", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-42", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-43", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-44", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-1", - "@type": "sc:Range", - "label": "Sermon 279, ch.4-6 d'Augustin (f. 1r-1v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-2", - "@type": "sc:Range", - "label": "Languette en papyrus du 2e folio", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002ar.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002av.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-3", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-33", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-34", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-35", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-36", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-37", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-38", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-39", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-40", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-41", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-42", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-43", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-44" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r9-4", - "@type": "sc:Range", - "label": "Sermon 288, ch. 3-5 d'Augustin (f.2r-4v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10", - "@type": "sc:Range", - "label": "Cahier XXIV", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-7", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-8", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-9", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-10" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-45", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-46", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-47", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-48", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-49", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-50", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-51", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-52", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_010r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_0010v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-1", - "@type": "sc:Range", - "label": "Sermon 288, ch. 3-5 d'Augustin (f.2r-4v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-45", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-46" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-3", - "@type": "sc:Range", - "label": "Sermon 21, ch. 1-2 d'Augustin (f.5r-5v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-4", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-47", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-48" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-5", - "@type": "sc:Range", - "label": "Sermon 21, ch. 4-8 d'Augustin (f. 6r-7v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-6", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-49", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-50" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-7", - "@type": "sc:Range", - "label": "Sermon 21, ch. 9-10 d'Augustin (f. 8r)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008r.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-8", - "@type": "sc:Range", - "label": "Sermon 41, ch. 1 d'Augustin (f. 8r-8v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-9", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-51", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-52" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r10-10", - "@type": "sc:Range", - "label": "Sermon 41, ch. 3-5 d'Augustin (f. 10r-11v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_0010r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_0010v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11", - "@type": "sc:Range", - "label": "Cahier XXV", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-7", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-8", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-9" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-53", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-54", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-55", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-56", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-57", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-58", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_0016v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-1", - "@type": "sc:Range", - "label": "Sermon 41, ch. 3-5 d'Augustin (f. 10r-11v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-53", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-54" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-3", - "@type": "sc:Range", - "label": "Sermon 41, ch. 7 d'Augustin (f. 12r-12v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-4", - "@type": "sc:Range", - "label": "Sermon 41, ch. 7 d'Augustin (f. 12r-12v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-5", - "@type": "sc:Range", - "label": "Sermon 38, ch. 1,1 – 4,6 d'Augustin (f. 12v-13v, 9r-9v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-6", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-55", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-56" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-7", - "@type": "sc:Range", - "label": "Sermon 38, ch. 5,7 – 8,10 d'Augustin (f. 14r-15v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-8", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-57", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-58" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r11-9", - "@type": "sc:Range", - "label": "Sermon 20, ch. 1-5 d'Augustin (f. 16r-19r)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12", - "@type": "sc:Range", - "label": "Cahier XXVI", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-4" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-59", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-60", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-1", - "@type": "sc:Range", - "label": "Sermon 20, ch. 1-5 d'Augustin (f. 16r-19r)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019r.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-2", - "@type": "sc:Range", - "label": "Sermon 358, ch. 1-6 d'Augustin (f. 19r-22v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-3", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-59", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-60" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r12-4", - "@type": "sc:Range", - "label": "Sermon 99, ch. 2-8 d'Augustin (f. 23r-26v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13", - "@type": "sc:Range", - "label": "Cahier XXVII", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-4" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-61", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-62", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-63", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-64", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-65", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-66", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-67", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-68", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-69", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-70", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-71", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-72", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-73", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-74", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-75", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-76" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-1", - "@type": "sc:Range", - "label": "Sermon 99, ch. 2-8 d'Augustin (f. 23r-26v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-2", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-61", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-62", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-63", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-64", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-65", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-66", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-67", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-68", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-69", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-70", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-71", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-72", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-73", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-74" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-3", - "@type": "sc:Range", - "label": "Sermon 359, ch. 3-4 d'Augustin (f. 27r-27v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r13-4", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-75", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-76" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14", - "@type": "sc:Range", - "label": "Cahier XXVIII", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14-2" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14-1", - "@type": "sc:Range", - "label": "Sermon 359, ch. 5-9 d'Augustin (f. 28r-31v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r14-2", - "@type": "sc:Range", - "label": "Sermon 81 d'Augustin (f. 31v-39v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15", - "@type": "sc:Range", - "label": "Cahier XXIX", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-7" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-77", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-78", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-1", - "@type": "sc:Range", - "label": "Sermon 81 d'Augustin (f. 31v-39v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-2", - "@type": "sc:Range", - "label": "Sermon 194 d'Augustin (f. 39v-41v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-3", - "@type": "sc:Range", - "label": "Sermon 374 d'Augustin (f. 42r-44v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-4", - "@type": "sc:Range", - "label": "Sermon De die sanctae epiphaniae de Maxime de Turin (début)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-5", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-77", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-78" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-6", - "@type": "sc:Range", - "label": "Sermon 352, ch.1,6 d'Augustin (f. 46r-46v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r15-7", - "@type": "sc:Range", - "label": "Enarrationes in Psalmos, Psaume 36 sermon 1, ch. 1-3 d'Augustin (f. 46v-48v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16", - "@type": "sc:Range", - "label": "Cahier XXX", - "ranges": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-1", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-2", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-3", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-4", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-5", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-6", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-7" - ], - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052v.json", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-79", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-80", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-81", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-82", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-83", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-84", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-1", - "@type": "sc:Range", - "label": "Enarrationes in Psalmos, Psaume 36 sermon 1, ch. 1-3 d'Augustin (f. 46v-48v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-2", - "@type": "sc:Range", - "label": "De doctrina christiana livre 1, ch.9-15 d'Augustin (f. 48v-49v, 45r-45v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-3", - "@type": "sc:Range", - "label": "Enarrationes in Psalmos, Psaume 36 sermon 2 d'Augustin (f. 45v, 50r-52r)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051v.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052r.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-4", - "@type": "sc:Range", - "label": "Sermon Mai 14, ch. 1 d'Augustin (f. 52r-52v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052v.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-5", - "@type": "sc:Range", - "label": "Lacune", - "canvases": [ - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-79", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-80", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-81", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-82", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-83", - "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-84" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-6", - "@type": "sc:Range", - "label": "Enarrationes in Psalmos, Psaume 84 d'Augustin (4 l. du ch.10, f. 53r)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053r.json" - ] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/range/r16-7", - "@type": "sc:Range", - "label": "Diverses inscriptions et dessins à la plume (f.53r-53v)", - "canvases": [ - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053r.json", - "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053v.json" - ] - } - ], - "sequences": [{ - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/sequence/normal", - "@type": "sc:Sequence", - "label": "Normal", - "canvases": [ - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f13", - "@type": "sc:Canvas", - "label": "2r (31r)", - "width": 4396, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f13.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f13" - }, - "width": 4396, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f13" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f14", - "@type": "sc:Canvas", - "label": "2v (31v)", - "width": 4436, - "height": 6221, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f14.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f14" - }, - "width": 4436, - "height": 6221 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f14" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-1", - "@type": "sc:Canvas", - "label": "Lacune (32r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-2", - "@type": "sc:Canvas", - "label": "Lacune (32v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-3", - "@type": "sc:Canvas", - "label": "Lacune (33r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-4", - "@type": "sc:Canvas", - "label": "Lacune (33v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-5", - "@type": "sc:Canvas", - "label": "Lacune (34r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-6", - "@type": "sc:Canvas", - "label": "Lacune (34v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-7", - "@type": "sc:Canvas", - "label": "Lacune (35r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-8", - "@type": "sc:Canvas", - "label": "Lacune (35v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-9", - "@type": "sc:Canvas", - "label": "Lacune (36r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-10", - "@type": "sc:Canvas", - "label": "Lacune (36v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-11", - "@type": "sc:Canvas", - "label": "Lacune (37r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-12", - "@type": "sc:Canvas", - "label": "Lacune (37v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-13", - "@type": "sc:Canvas", - "label": "Lacune (38r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-14", - "@type": "sc:Canvas", - "label": "Lacune (38v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-15", - "@type": "sc:Canvas", - "label": "Lacune (39r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-16", - "@type": "sc:Canvas", - "label": "Lacune (39v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f11", - "@type": "sc:Canvas", - "label": "1r (40r)", - "width": 4396, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f11.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f11" - }, - "width": 4396, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f11" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f12", - "@type": "sc:Canvas", - "label": "1v (40v)", - "width": 4436, - "height": 6221, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f12.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f12" - }, - "width": 4436, - "height": 6221 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f12" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f15", - "@type": "sc:Canvas", - "label": "3r (41r)", - "width": 4396, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f15.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f15" - }, - "width": 4396, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f15" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f16", - "@type": "sc:Canvas", - "label": "3v (41v)", - "width": 4405, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f16.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f16" - }, - "width": 4405, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f16" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f17", - "@type": "sc:Canvas", - "label": "4r (42r)", - "width": 4413, - "height": 6172, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f17.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f17" - }, - "width": 4413, - "height": 6172 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f17" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f18", - "@type": "sc:Canvas", - "label": "4v (42v)", - "width": 4405, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f18.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f18" - }, - "width": 4405, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f18" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f19", - "@type": "sc:Canvas", - "label": "5r (43r)", - "width": 4413, - "height": 6191, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f19.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f19" - }, - "width": 4413, - "height": 6191 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f19" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f20", - "@type": "sc:Canvas", - "label": "5v (43v)", - "width": 4379, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f20.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f20" - }, - "width": 4379, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f20" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f21", - "@type": "sc:Canvas", - "label": "6r (44r)", - "width": 4413, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f21.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f21" - }, - "width": 4413, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f21" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f22", - "@type": "sc:Canvas", - "label": "6v (44v)", - "width": 4379, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f22.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f22" - }, - "width": 4379, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f22" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-17", - "@type": "sc:Canvas", - "label": "Lacune (45r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-18", - "@type": "sc:Canvas", - "label": "Lacune (45v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-19", - "@type": "sc:Canvas", - "label": "Lacune (46r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-20", - "@type": "sc:Canvas", - "label": "Lacune (46v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f23", - "@type": "sc:Canvas", - "label": "7r (47r)", - "width": 4417, - "height": 6214, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f23.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f23" - }, - "width": 4417, - "height": 6214 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f23" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f24", - "@type": "sc:Canvas", - "label": "7v (47v)", - "width": 4379, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f24.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f24" - }, - "width": 4379, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f24" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f25", - "@type": "sc:Canvas", - "label": "8r (48r)", - "width": 4397, - "height": 6214, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f25.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f25" - }, - "width": 4397, - "height": 6214 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f25" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f26", - "@type": "sc:Canvas", - "label": "8v (48v)", - "width": 4379, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f26.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f26" - }, - "width": 4379, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f26" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f27", - "@type": "sc:Canvas", - "label": "9r (49r)", - "width": 4380, - "height": 6191, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f27.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f27" - }, - "width": 4380, - "height": 6191 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f27" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f28", - "@type": "sc:Canvas", - "label": "9v (49v)", - "width": 4365, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f28.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f28" - }, - "width": 4365, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f28" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f29", - "@type": "sc:Canvas", - "label": "10r (50r)", - "width": 4345, - "height": 6182, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f29.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f29" - }, - "width": 4345, - "height": 6182 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f29" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f30", - "@type": "sc:Canvas", - "label": "10v (50v)", - "width": 4317, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f30.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f30" - }, - "width": 4317, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f30" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f31", - "@type": "sc:Canvas", - "label": "11r (51r)", - "width": 4286, - "height": 6162, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f31.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f31" - }, - "width": 4286, - "height": 6162 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f31" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f32", - "@type": "sc:Canvas", - "label": "11v (51v)", - "width": 4292, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f32.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f32" - }, - "width": 4292, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f32" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f33", - "@type": "sc:Canvas", - "label": "12r (52r)", - "width": 4368, - "height": 6173, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f33.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f33" - }, - "width": 4368, - "height": 6173 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f33" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f34", - "@type": "sc:Canvas", - "label": "12v (52v)", - "width": 4311, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f34.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f34" - }, - "width": 4311, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f34" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f35", - "@type": "sc:Canvas", - "label": "13r (53r)", - "width": 4330, - "height": 6193, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f35.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f35" - }, - "width": 4330, - "height": 6193 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f35" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f36", - "@type": "sc:Canvas", - "label": "13v (53v)", - "width": 4311, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f36.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f36" - }, - "width": 4311, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f36" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f37", - "@type": "sc:Canvas", - "label": "14r (54r)", - "width": 4361, - "height": 6163, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f37.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f37" - }, - "width": 4361, - "height": 6163 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f37" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f38", - "@type": "sc:Canvas", - "label": "14v (54v)", - "width": 4288, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f38.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f38" - }, - "width": 4288, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f38" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f39", - "@type": "sc:Canvas", - "label": "15r (55r)", - "width": 4313, - "height": 6163, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f39.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f39" - }, - "width": 4313, - "height": 6163 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f39" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f40", - "@type": "sc:Canvas", - "label": "15v (55v)", - "width": 4254, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f40.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f40" - }, - "width": 4254, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f40" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-21", - "@type": "sc:Canvas", - "label": "Lacune (56r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-22", - "@type": "sc:Canvas", - "label": "Lacune (56v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f41", - "@type": "sc:Canvas", - "label": "16r (57r)", - "width": 4313, - "height": 6148, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f41.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f41" - }, - "width": 4313, - "height": 6148 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f41" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f42", - "@type": "sc:Canvas", - "label": "16v (57v)", - "width": 4254, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f42.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f42" - }, - "width": 4254, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f42" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f43", - "@type": "sc:Canvas", - "label": "17r (58r)", - "width": 4274, - "height": 6171, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f43.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f43" - }, - "width": 4274, - "height": 6171 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f43" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f44", - "@type": "sc:Canvas", - "label": "17v (58v)", - "width": 4254, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f44.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f44" - }, - "width": 4254, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f44" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f45", - "@type": "sc:Canvas", - "label": "NP", - "width": 4275, - "height": 6171, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f45.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f45" - }, - "width": 4275, - "height": 6171 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f45" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f46", - "@type": "sc:Canvas", - "label": "NP", - "width": 4274, - "height": 6240, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f46.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f46" - }, - "width": 4274, - "height": 6240 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f46" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f47", - "@type": "sc:Canvas", - "label": "18r (59r)", - "width": 4286, - "height": 6166, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f47.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f47" - }, - "width": 4286, - "height": 6166 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f47" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f48", - "@type": "sc:Canvas", - "label": "18v (59v)", - "width": 4249, - "height": 6235, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f48.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f48" - }, - "width": 4249, - "height": 6235 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f48" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f49", - "@type": "sc:Canvas", - "label": "19r (60r)", - "width": 4263, - "height": 6130, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f49.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f49" - }, - "width": 4263, - "height": 6130 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f49" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f50", - "@type": "sc:Canvas", - "label": "19v (60v)", - "width": 4239, - "height": 6221, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f50.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f50" - }, - "width": 4239, - "height": 6221 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f50" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f51", - "@type": "sc:Canvas", - "label": "20r (61r)", - "width": 4236, - "height": 6162, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f51.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f51" - }, - "width": 4236, - "height": 6162 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f51" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f52", - "@type": "sc:Canvas", - "label": "20v (61v)", - "width": 4239, - "height": 6221, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f52.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f52" - }, - "width": 4239, - "height": 6221 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f52" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-23", - "@type": "sc:Canvas", - "label": "Lacune (62r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-24", - "@type": "sc:Canvas", - "label": "Lacune (62v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-25", - "@type": "sc:Canvas", - "label": "Lacune (63r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-26", - "@type": "sc:Canvas", - "label": "Lacune (63v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f53", - "@type": "sc:Canvas", - "label": "21r (64r)", - "width": 4265, - "height": 6157, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f53.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f53" - }, - "width": 4265, - "height": 6157 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f53" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f54", - "@type": "sc:Canvas", - "label": "21v (64v)", - "width": 4239, - "height": 6269, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f54.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f54" - }, - "width": 4239, - "height": 6269 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f54" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f55", - "@type": "sc:Canvas", - "label": "22r (65r)", - "width": 4306, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f55.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f55" - }, - "width": 4306, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f55" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f56", - "@type": "sc:Canvas", - "label": "22v (65v)", - "width": 4211, - "height": 6217, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f56.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f56" - }, - "width": 4211, - "height": 6217 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f56" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f57", - "@type": "sc:Canvas", - "label": "23r (66r)", - "width": 4286, - "height": 6162, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f57.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f57" - }, - "width": 4286, - "height": 6162 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f57" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f58", - "@type": "sc:Canvas", - "label": "23v (66v)", - "width": 4202, - "height": 6217, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f58.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f58" - }, - "width": 4202, - "height": 6217 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f58" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f59", - "@type": "sc:Canvas", - "label": "24r (67r)", - "width": 4262, - "height": 6162, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f59.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f59" - }, - "width": 4262, - "height": 6162 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f59" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f60", - "@type": "sc:Canvas", - "label": "24v (67v)", - "width": 4185, - "height": 6210, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f60.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f60" - }, - "width": 4185, - "height": 6210 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f60" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-27", - "@type": "sc:Canvas", - "label": "Lacune (68r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-28", - "@type": "sc:Canvas", - "label": "Lacune (68v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-29", - "@type": "sc:Canvas", - "label": "Lacune (69r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-30", - "@type": "sc:Canvas", - "label": "Lacune (69v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f61", - "@type": "sc:Canvas", - "label": "25r (70r)", - "width": 4276, - "height": 6140, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f61.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f61" - }, - "width": 4276, - "height": 6140 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f61" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f62", - "@type": "sc:Canvas", - "label": "25v (70v)", - "width": 4152, - "height": 6210, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f62.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f62" - }, - "width": 4152, - "height": 6210 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f62" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f63", - "@type": "sc:Canvas", - "label": "26r (71r)", - "width": 4288, - "height": 6194, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f63.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f63" - }, - "width": 4288, - "height": 6194 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f63" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f64", - "@type": "sc:Canvas", - "label": "26v (71v)", - "width": 4128, - "height": 6210, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f64.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f64" - }, - "width": 4128, - "height": 6210 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f64" - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_a.json", - "@type": "sc:Canvas", - "label": "a (72r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/nlr-lat-F-I-1_a.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_a.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/nlr/nlr-lat-F-I-1/nlr-lat-F-I-1_a.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/nlr/nlr-lat-F-I-1/nlr-lat-F-I-1_a.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_b.json", - "@type": "sc:Canvas", - "label": "b (72v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/nlr-lat-F-I-1_b.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/nlr-lat-F-I-1_b.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/nlr/nlr-lat-F-I-1/nlr-lat-F-I-1_b.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/nlr/nlr-lat-F-I-1/nlr-lat-F-I-1_b.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f65", - "@type": "sc:Canvas", - "label": "27r (73r)", - "width": 4340, - "height": 6194, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f65.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f65" - }, - "width": 4340, - "height": 6194 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f65" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f66", - "@type": "sc:Canvas", - "label": "27v (73v)", - "width": 4176, - "height": 6210, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f66.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f66" - }, - "width": 4176, - "height": 6210 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f66" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f67", - "@type": "sc:Canvas", - "label": "28r (74r)", - "width": 4375, - "height": 6243, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f67.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f67" - }, - "width": 4375, - "height": 6243 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f67" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f68", - "@type": "sc:Canvas", - "label": "28v (74v)", - "width": 4160, - "height": 6242, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f68.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f68" - }, - "width": 4160, - "height": 6242 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f68" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f69", - "@type": "sc:Canvas", - "label": "29r (75r)", - "width": 4359, - "height": 6243, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f69.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f69" - }, - "width": 4359, - "height": 6243 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f69" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f70", - "@type": "sc:Canvas", - "label": "29v (75v)", - "width": 4160, - "height": 6242, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f70.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f70" - }, - "width": 4160, - "height": 6242 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f70" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f71", - "@type": "sc:Canvas", - "label": "30r (76r)", - "width": 4308, - "height": 6207, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f71.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f71" - }, - "width": 4308, - "height": 6207 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f71" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f72", - "@type": "sc:Canvas", - "label": "30v (76v)", - "width": 4160, - "height": 6234, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f72.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f72" - }, - "width": 4160, - "height": 6234 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f72" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f73", - "@type": "sc:Canvas", - "label": "31r (77r)", - "width": 4339, - "height": 6207, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f73.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f73" - }, - "width": 4339, - "height": 6207 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f73" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f74", - "@type": "sc:Canvas", - "label": "31v (77v)", - "width": 4160, - "height": 6209, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f74.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f74" - }, - "width": 4160, - "height": 6209 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f74" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f75", - "@type": "sc:Canvas", - "label": "32r (78r)", - "width": 4339, - "height": 6207, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f75.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f75" - }, - "width": 4339, - "height": 6207 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f75" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f76", - "@type": "sc:Canvas", - "label": "32v (78v)", - "width": 4136, - "height": 6192, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f76.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f76" - }, - "width": 4136, - "height": 6192 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f76" - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-31", - "@type": "sc:Canvas", - "label": "Lacune (79r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-32", - "@type": "sc:Canvas", - "label": "Lacune (79v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f77", - "@type": "sc:Canvas", - "label": "33r (80r)", - "width": 4321, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f77.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f77" - }, - "width": 4321, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f77" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f78", - "@type": "sc:Canvas", - "label": "33v (80v)", - "width": 4104, - "height": 6166, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f78.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f78" - }, - "width": 4104, - "height": 6166 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f78" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f79", - "@type": "sc:Canvas", - "label": "34r (81r)", - "width": 4321, - "height": 6197, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f79.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f79" - }, - "width": 4321, - "height": 6197 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f79" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f80", - "@type": "sc:Canvas", - "label": "34v (81v)", - "width": 4136, - "height": 6224, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f80.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f80" - }, - "width": 4136, - "height": 6224 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f80" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f81", - "@type": "sc:Canvas", - "label": "35r (82r)", - "width": 4289, - "height": 6150, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f81.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f81" - }, - "width": 4289, - "height": 6150 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f81" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f82", - "@type": "sc:Canvas", - "label": "35v (82v)", - "width": 4299, - "height": 6188, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f82.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f82" - }, - "width": 4299, - "height": 6188 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f82" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f83", - "@type": "sc:Canvas", - "label": "36r (83r)", - "width": 4331, - "height": 6200, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f83.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f83" - }, - "width": 4331, - "height": 6200 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f83" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f84", - "@type": "sc:Canvas", - "label": "36v (83v)", - "width": 4306, - "height": 6211, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f84.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f84" - }, - "width": 4306, - "height": 6211 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f84" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f85", - "@type": "sc:Canvas", - "label": "37r (84r)", - "width": 4310, - "height": 6200, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f85.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f85" - }, - "width": 4310, - "height": 6200 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f85" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f86", - "@type": "sc:Canvas", - "label": "37v (84v)", - "width": 4327, - "height": 6233, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f86.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f86" - }, - "width": 4327, - "height": 6233 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f86" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f87", - "@type": "sc:Canvas", - "label": "38r (85r)", - "width": 4310, - "height": 6200, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f87.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f87" - }, - "width": 4310, - "height": 6200 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f87" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f88", - "@type": "sc:Canvas", - "label": "38v (85v)", - "width": 4334, - "height": 6245, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f88.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f88" - }, - "width": 4334, - "height": 6245 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f88" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f89", - "@type": "sc:Canvas", - "label": "39r (86r)", - "width": 4328, - "height": 6233, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f89.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f89" - }, - "width": 4328, - "height": 6233 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f89" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f90", - "@type": "sc:Canvas", - "label": "39v (86v)", - "width": 4344, - "height": 6237, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f90.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f90" - }, - "width": 4344, - "height": 6237 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f90" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f91", - "@type": "sc:Canvas", - "label": "40r (87r)", - "width": 4337, - "height": 6221, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f91.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f91" - }, - "width": 4337, - "height": 6221 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f91" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f92", - "@type": "sc:Canvas", - "label": "40v (87v)", - "width": 4340, - "height": 6217, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f92.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f92" - }, - "width": 4340, - "height": 6217 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f92" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f93", - "@type": "sc:Canvas", - "label": "41r (88r)", - "width": 4337, - "height": 6201, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f93.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f93" - }, - "width": 4337, - "height": 6201 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f93" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f94", - "@type": "sc:Canvas", - "label": "41v (88v)", - "width": 4348, - "height": 6271, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f94.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f94" - }, - "width": 4348, - "height": 6271 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f94" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f95", - "@type": "sc:Canvas", - "label": "42r (89r)", - "width": 4372, - "height": 6201, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f95.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f95" - }, - "width": 4372, - "height": 6201 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f95" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f96", - "@type": "sc:Canvas", - "label": "42v (89v)", - "width": 4348, - "height": 6271, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f96.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f96" - }, - "width": 4348, - "height": 6271 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f96" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f97", - "@type": "sc:Canvas", - "label": "43r (90r)", - "width": 4329, - "height": 6178, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f97.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f97" - }, - "width": 4329, - "height": 6178 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f97" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f98", - "@type": "sc:Canvas", - "label": "43v (90v)", - "width": 4348, - "height": 6222, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f98.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f98" - }, - "width": 4348, - "height": 6222 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f98" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f99", - "@type": "sc:Canvas", - "label": "44r (91r)", - "width": 4304, - "height": 6175, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f99.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f99" - }, - "width": 4304, - "height": 6175 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f99" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f100", - "@type": "sc:Canvas", - "label": "44v (91v)", - "width": 4373, - "height": 6222, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f100.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f100" - }, - "width": 4373, - "height": 6222 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f100" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f101", - "@type": "sc:Canvas", - "label": "45r (92r)", - "width": 4333, - "height": 6173, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f101.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f101" - }, - "width": 4333, - "height": 6173 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f101" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f102", - "@type": "sc:Canvas", - "label": "45v (92v)", - "width": 4379, - "height": 6280, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f102.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f102" - }, - "width": 4379, - "height": 6280 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f102" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f103", - "@type": "sc:Canvas", - "label": "46r (93r)", - "width": 4292, - "height": 6199, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f103.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f103" - }, - "width": 4292, - "height": 6199 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f103" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f104", - "@type": "sc:Canvas", - "label": "46v (93v)", - "width": 4353, - "height": 6271, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f104.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f104" - }, - "width": 4353, - "height": 6271 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f104" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f105", - "@type": "sc:Canvas", - "label": "47r (94r)", - "width": 4312, - "height": 6203, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f105.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f105" - }, - "width": 4312, - "height": 6203 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f105" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f106", - "@type": "sc:Canvas", - "label": "47v (94v)", - "width": 4353, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f106.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f106" - }, - "width": 4353, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f106" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f107", - "@type": "sc:Canvas", - "label": "48r (95r)", - "width": 4312, - "height": 6203, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f107.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f107" - }, - "width": 4312, - "height": 6203 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f107" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f108", - "@type": "sc:Canvas", - "label": "48v (95v)", - "width": 4353, - "height": 6282, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f108.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f108" - }, - "width": 4353, - "height": 6282 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f108" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f109", - "@type": "sc:Canvas", - "label": "49r (96r)", - "width": 4388, - "height": 6271, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f109.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f109" - }, - "width": 4388, - "height": 6271 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f109" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f110", - "@type": "sc:Canvas", - "label": "49v (96v)", - "width": 4365, - "height": 6273, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f110.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f110" - }, - "width": 4365, - "height": 6273 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f110" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f111", - "@type": "sc:Canvas", - "label": "50r (97r)", - "width": 4371, - "height": 6255, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f111.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f111" - }, - "width": 4371, - "height": 6255 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f111" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f112", - "@type": "sc:Canvas", - "label": "50v (97v)", - "width": 4353, - "height": 6248, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f112.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f112" - }, - "width": 4353, - "height": 6248 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f112" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f113", - "@type": "sc:Canvas", - "label": "51r (98r)", - "width": 4371, - "height": 6255, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f113.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f113" - }, - "width": 4371, - "height": 6255 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f113" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f114", - "@type": "sc:Canvas", - "label": "51v (98v)", - "width": 4372, - "height": 6265, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f114.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f114" - }, - "width": 4372, - "height": 6265 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f114" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f115", - "@type": "sc:Canvas", - "label": "52r (99r)", - "width": 4385, - "height": 6261, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f115.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f115" - }, - "width": 4385, - "height": 6261 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f115" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f116", - "@type": "sc:Canvas", - "label": "52v (99v)", - "width": 4372, - "height": 6265, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f116.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f116" - }, - "width": 4372, - "height": 6265 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f116" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f117", - "@type": "sc:Canvas", - "label": "53r (100r)", - "width": 4367, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f117.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f117" - }, - "width": 4367, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f117" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f118", - "@type": "sc:Canvas", - "label": "53v (100v)", - "width": 4348, - "height": 6265, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f118.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f118" - }, - "width": 4348, - "height": 6265 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f118" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f119", - "@type": "sc:Canvas", - "label": "54r (101r)", - "width": 4367, - "height": 6182, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f119.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f119" - }, - "width": 4367, - "height": 6182 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f119" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f120", - "@type": "sc:Canvas", - "label": "54v (101v)", - "width": 4348, - "height": 6238, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f120.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f120" - }, - "width": 4348, - "height": 6238 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f120" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f121", - "@type": "sc:Canvas", - "label": "55r (102r)", - "width": 4371, - "height": 6255, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f121.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f121" - }, - "width": 4371, - "height": 6255 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f121" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f122", - "@type": "sc:Canvas", - "label": "55v (102v)", - "width": 4348, - "height": 6216, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f122.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f122" - }, - "width": 4348, - "height": 6216 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f122" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f123", - "@type": "sc:Canvas", - "label": "56r (103r)", - "width": 4371, - "height": 6230, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f123.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f123" - }, - "width": 4371, - "height": 6230 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f123" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f124", - "@type": "sc:Canvas", - "label": "56v (103v)", - "width": 4382, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f124.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f124" - }, - "width": 4382, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f124" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f125", - "@type": "sc:Canvas", - "label": "57r (104r)", - "width": 4407, - "height": 6230, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f125.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f125" - }, - "width": 4407, - "height": 6230 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f125" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f126", - "@type": "sc:Canvas", - "label": "57v (104v)", - "width": 4382, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f126.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f126" - }, - "width": 4382, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f126" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f127", - "@type": "sc:Canvas", - "label": "58r (105r)", - "width": 4409, - "height": 6254, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f127.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f127" - }, - "width": 4409, - "height": 6254 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f127" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f128", - "@type": "sc:Canvas", - "label": "58v (105v)", - "width": 4382, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f128.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f128" - }, - "width": 4382, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f128" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f129", - "@type": "sc:Canvas", - "label": "59r (106r)", - "width": 4399, - "height": 6255, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f129.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f129" - }, - "width": 4399, - "height": 6255 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f129" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f130", - "@type": "sc:Canvas", - "label": "59v (106v)", - "width": 4382, - "height": 6256, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f130.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f130" - }, - "width": 4382, - "height": 6256 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f130" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f131", - "@type": "sc:Canvas", - "label": "60r (107r)", - "width": 4407, - "height": 6223, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f131.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f131" - }, - "width": 4407, - "height": 6223 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f131" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f132", - "@type": "sc:Canvas", - "label": "60v (107v)", - "width": 4382, - "height": 6229, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f132.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f132" - }, - "width": 4382, - "height": 6229 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f132" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f133", - "@type": "sc:Canvas", - "label": "61r (108r)", - "width": 4404, - "height": 6233, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f133.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f133" - }, - "width": 4404, - "height": 6233 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f133" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f134", - "@type": "sc:Canvas", - "label": "61v (108v)", - "width": 4391, - "height": 6229, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f134.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f134" - }, - "width": 4391, - "height": 6229 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f134" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f135", - "@type": "sc:Canvas", - "label": "62r (109r)", - "width": 4436, - "height": 6199, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f135.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f135" - }, - "width": 4436, - "height": 6199 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f135" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f136", - "@type": "sc:Canvas", - "label": "62v (109v)", - "width": 4411, - "height": 6250, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f136.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f136" - }, - "width": 4411, - "height": 6250 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f136" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f137", - "@type": "sc:Canvas", - "label": "63r (110r)", - "width": 4422, - "height": 6148, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f137.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f137" - }, - "width": 4422, - "height": 6148 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f137" - }] - }, - { - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f138", - "@type": "sc:Canvas", - "label": "63v (110v)", - "width": 4421, - "height": 6191, - "images": [{ - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://gallica.bnf.fr/ark:/12148/btv1b8438674r/f138.highres", - "format": "image/jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", - "@id": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/f138" - }, - "width": 4421, - "height": 6191 - }, - "on": "http://gallica.bnf.fr/iiif/ark:/12148/btv1b8438674r/canvas/f138" - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001r.json", - "@type": "sc:Canvas", - "label": "1r (221r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_001r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_001r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_001r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001v.json", - "@type": "sc:Canvas", - "label": "1v (221v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_001v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_001v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_001v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_001v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002ar.json", - "@type": "sc:Canvas", - "label": "2ar (222r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_002ar.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002ar.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002ar.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002ar.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002av.json", - "@type": "sc:Canvas", - "label": "2av (222v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_002av.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002av.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002av.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002av.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-33", - "@type": "sc:Canvas", - "label": "Lacune (223r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-34", - "@type": "sc:Canvas", - "label": "Lacune (223v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-35", - "@type": "sc:Canvas", - "label": "Lacune (224r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-36", - "@type": "sc:Canvas", - "label": "Lacune (224v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-37", - "@type": "sc:Canvas", - "label": "Lacune (225r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-38", - "@type": "sc:Canvas", - "label": "Lacune (225v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-39", - "@type": "sc:Canvas", - "label": "Lacune (226r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-40", - "@type": "sc:Canvas", - "label": "Lacune (226v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-41", - "@type": "sc:Canvas", - "label": "Lacune (227r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-42", - "@type": "sc:Canvas", - "label": "Lacune (227v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-43", - "@type": "sc:Canvas", - "label": "Lacune (228r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-44", - "@type": "sc:Canvas", - "label": "Lacune (228v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002r.json", - "@type": "sc:Canvas", - "label": "2r (229r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_002r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002v.json", - "@type": "sc:Canvas", - "label": "2v (229v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_002v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_002v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_002v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003r.json", - "@type": "sc:Canvas", - "label": "3r (230r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_003r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_003r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_003r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003v.json", - "@type": "sc:Canvas", - "label": "3v (230v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_003v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_003v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_003v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_003v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004r.json", - "@type": "sc:Canvas", - "label": "4r (231r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_004r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_004r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_004r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004v.json", - "@type": "sc:Canvas", - "label": "4v (231v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_004v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_004v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_004v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_004v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-45", - "@type": "sc:Canvas", - "label": "Lacune (232r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-46", - "@type": "sc:Canvas", - "label": "Lacune (232v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005r.json", - "@type": "sc:Canvas", - "label": "5r (233r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_005r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_005r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_005r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005v.json", - "@type": "sc:Canvas", - "label": "5v (233v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_005v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_005v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_005v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_005v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-47", - "@type": "sc:Canvas", - "label": "Lacune (234r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-48", - "@type": "sc:Canvas", - "label": "Lacune (234v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006r.json", - "@type": "sc:Canvas", - "label": "6r (235r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_006r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_006r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_006r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006v.json", - "@type": "sc:Canvas", - "label": "6v (235v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_006v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_006v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_006v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_006v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007r.json", - "@type": "sc:Canvas", - "label": "7r (236r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_007r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_007r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_007r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007v.json", - "@type": "sc:Canvas", - "label": "7v (236v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_007v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_007v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_007v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_007v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-49", - "@type": "sc:Canvas", - "label": "Lacune (237r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-50", - "@type": "sc:Canvas", - "label": "Lacune (237v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008r.json", - "@type": "sc:Canvas", - "label": "8r (238r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_008r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_008r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_008r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008v.json", - "@type": "sc:Canvas", - "label": "8v (238v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_008v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_008v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_008v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_008v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-51", - "@type": "sc:Canvas", - "label": "Lacune (239r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-52", - "@type": "sc:Canvas", - "label": "Lacune (239v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_010r.json", - "@type": "sc:Canvas", - "label": "10r (240r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_010r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_010r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_010r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_010r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_010v.json", - "@type": "sc:Canvas", - "label": "10v (240v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_010v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_010v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_010v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_010v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011r.json", - "@type": "sc:Canvas", - "label": "11r (241r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_011r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_011r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_011r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011v.json", - "@type": "sc:Canvas", - "label": "11v (241v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_011v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_011v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_011v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_011v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-53", - "@type": "sc:Canvas", - "label": "Lacune (242r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-54", - "@type": "sc:Canvas", - "label": "Lacune (242v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012r.json", - "@type": "sc:Canvas", - "label": "12r (243r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_012r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_012r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_012r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json", - "@type": "sc:Canvas", - "label": "12v (243v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_012v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_012v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_012v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_012v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013r.json", - "@type": "sc:Canvas", - "label": "13r (244r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_013r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_013r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_013r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013v.json", - "@type": "sc:Canvas", - "label": "13v (244v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_013v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_013v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_013v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_013v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009r.json", - "@type": "sc:Canvas", - "label": "9r (245r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_009r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_009r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_009r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009v.json", - "@type": "sc:Canvas", - "label": "9v (245v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_009v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_009v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_009v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_009v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-55", - "@type": "sc:Canvas", - "label": "Lacune (246r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-56", - "@type": "sc:Canvas", - "label": "Lacune (246v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014r.json", - "@type": "sc:Canvas", - "label": "14r (247r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_014r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_014r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_014r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014v.json", - "@type": "sc:Canvas", - "label": "14v (247v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_014v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_014v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_014v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_014v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015r.json", - "@type": "sc:Canvas", - "label": "15r (248r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_015r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_015r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_015r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015v.json", - "@type": "sc:Canvas", - "label": "15v (248v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_015v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_015v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_015v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_015v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-57", - "@type": "sc:Canvas", - "label": "Lacune (249r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-58", - "@type": "sc:Canvas", - "label": "Lacune (249v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016r.json", - "@type": "sc:Canvas", - "label": "16r (250r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_016r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_016r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_016r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016v.json", - "@type": "sc:Canvas", - "label": "16v (250v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_016v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_016v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_016v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_016v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017r.json", - "@type": "sc:Canvas", - "label": "17r (251r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_017r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_017r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_017r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017v.json", - "@type": "sc:Canvas", - "label": "17v (251v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_017v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_017v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_017v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_017v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018r.json", - "@type": "sc:Canvas", - "label": "18r (252r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_018r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_018r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_018r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018v.json", - "@type": "sc:Canvas", - "label": "18v (252v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_018v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_018v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_018v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_018v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019r.json", - "@type": "sc:Canvas", - "label": "19r (253r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_019r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_019r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_019r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019v.json", - "@type": "sc:Canvas", - "label": "19v (253v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_019v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_019v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_019v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_019v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020r.json", - "@type": "sc:Canvas", - "label": "20r (254r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_020r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_020r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_020r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020v.json", - "@type": "sc:Canvas", - "label": "20v (254v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_020v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_020v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_020v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_020v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021r.json", - "@type": "sc:Canvas", - "label": "21r (255r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_021r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_021r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_021r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021v.json", - "@type": "sc:Canvas", - "label": "21v (255v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_021v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_021v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_021v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_021v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022r.json", - "@type": "sc:Canvas", - "label": "22r (256r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_022r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_022r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_022r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022v.json", - "@type": "sc:Canvas", - "label": "22v (256v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_022v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_022v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_022v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_022v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-59", - "@type": "sc:Canvas", - "label": "Lacune (257r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-60", - "@type": "sc:Canvas", - "label": "Lacune (257v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023r.json", - "@type": "sc:Canvas", - "label": "23r (258r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_023r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_023r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_023r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023v.json", - "@type": "sc:Canvas", - "label": "23v (258v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_023v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_023v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_023v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_023v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024r.json", - "@type": "sc:Canvas", - "label": "24r (259r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_024r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_024r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_024r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024v.json", - "@type": "sc:Canvas", - "label": "24v (259v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_024v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_024v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_024v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_024v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025r.json", - "@type": "sc:Canvas", - "label": "25r (260r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_025r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_025r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_025r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025v.json", - "@type": "sc:Canvas", - "label": "25v (260v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_025v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_025v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_025v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_025v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026r.json", - "@type": "sc:Canvas", - "label": "26r (261r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_026r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_026r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_026r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026v.json", - "@type": "sc:Canvas", - "label": "26v (261v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_026v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_026v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_026v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_026v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-61", - "@type": "sc:Canvas", - "label": "Lacune (262r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-62", - "@type": "sc:Canvas", - "label": "Lacune (262v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-63", - "@type": "sc:Canvas", - "label": "Lacune (263r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-64", - "@type": "sc:Canvas", - "label": "Lacune (263v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-65", - "@type": "sc:Canvas", - "label": "Lacune (264r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-66", - "@type": "sc:Canvas", - "label": "Lacune (264v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-67", - "@type": "sc:Canvas", - "label": "Lacune (265r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-68", - "@type": "sc:Canvas", - "label": "Lacune (265v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-69", - "@type": "sc:Canvas", - "label": "Lacune (266r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-70", - "@type": "sc:Canvas", - "label": "Lacune (266v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-71", - "@type": "sc:Canvas", - "label": "Lacune (267r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-72", - "@type": "sc:Canvas", - "label": "Lacune (267v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-73", - "@type": "sc:Canvas", - "label": "Lacune (268r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-74", - "@type": "sc:Canvas", - "label": "Lacune (268v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027r.json", - "@type": "sc:Canvas", - "label": "27r (269r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_027r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_027r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_027r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027v.json", - "@type": "sc:Canvas", - "label": "27v (269v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_027v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_027v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_027v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_027v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-75", - "@type": "sc:Canvas", - "label": "Lacune (270r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-76", - "@type": "sc:Canvas", - "label": "Lacune (270v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028r.json", - "@type": "sc:Canvas", - "label": "28r (271r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_028r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_028r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_028r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028v.json", - "@type": "sc:Canvas", - "label": "28v (271v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_028v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_028v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_028v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_028v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029r.json", - "@type": "sc:Canvas", - "label": "29r (272r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_029r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_029r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_029r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029v.json", - "@type": "sc:Canvas", - "label": "29v (272v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_029v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_029v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_029v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_029v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030r.json", - "@type": "sc:Canvas", - "label": "30r (273r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_030r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_030r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_030r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030v.json", - "@type": "sc:Canvas", - "label": "30v (273v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_030v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_030v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_030v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_030v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031r.json", - "@type": "sc:Canvas", - "label": "31r (274r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_031r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_031r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_031r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031v.json", - "@type": "sc:Canvas", - "label": "31v (274v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_031v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_031v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_031v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_031v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032r.json", - "@type": "sc:Canvas", - "label": "32r (275r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_032r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_032r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_032r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032v.json", - "@type": "sc:Canvas", - "label": "32v (275v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_032v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_032v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_032v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_032v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033r.json", - "@type": "sc:Canvas", - "label": "33r (276r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_033r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_033r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_033r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033v.json", - "@type": "sc:Canvas", - "label": "33v (276v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_033v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_033v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_033v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_033v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034r.json", - "@type": "sc:Canvas", - "label": "34r (277r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_034r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_034r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_034r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034v.json", - "@type": "sc:Canvas", - "label": "34v (277v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_034v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_034v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_034v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_034v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035r.json", - "@type": "sc:Canvas", - "label": "35r (278r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_035r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_035r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_035r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035v.json", - "@type": "sc:Canvas", - "label": "35v (278v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_035v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_035v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_035v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_035v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036r.json", - "@type": "sc:Canvas", - "label": "36r (279r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_036r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_036r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_036r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036v.json", - "@type": "sc:Canvas", - "label": "36v (279v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_036v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_036v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_036v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_036v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037r.json", - "@type": "sc:Canvas", - "label": "37r (280r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_037r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_037r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_037r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037v.json", - "@type": "sc:Canvas", - "label": "37v (280v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_037v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_037v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_037v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_037v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038r.json", - "@type": "sc:Canvas", - "label": "38r (281r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_038r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_038r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_038r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038v.json", - "@type": "sc:Canvas", - "label": "38v (281v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_038v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_038v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_038v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_038v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039r.json", - "@type": "sc:Canvas", - "label": "39r (282r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_039r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_039r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_039r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039v.json", - "@type": "sc:Canvas", - "label": "39v (282v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_039v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_039v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_039v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_039v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040r.json", - "@type": "sc:Canvas", - "label": "40r (283r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_040r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_040r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_040r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040v.json", - "@type": "sc:Canvas", - "label": "40v (283v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_040v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_040v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_040v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_040v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041r.json", - "@type": "sc:Canvas", - "label": "41r (284r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_041r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_041r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_041r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041v.json", - "@type": "sc:Canvas", - "label": "41v (284v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_041v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_041v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_041v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_041v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042r.json", - "@type": "sc:Canvas", - "label": "42r (285r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_042r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_042r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_042r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042v.json", - "@type": "sc:Canvas", - "label": "42v (285v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_042v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_042v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_042v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_042v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043r.json", - "@type": "sc:Canvas", - "label": "43r (286r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_043r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_043r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_043r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043v.json", - "@type": "sc:Canvas", - "label": "43v (286v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_043v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_043v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_043v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_043v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044r.json", - "@type": "sc:Canvas", - "label": "44r (287r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_044r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_044r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_044r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044v.json", - "@type": "sc:Canvas", - "label": "44v (287v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_044v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_044v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_044v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_044v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-77", - "@type": "sc:Canvas", - "label": "Lacune (288r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-78", - "@type": "sc:Canvas", - "label": "Lacune (288v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046r.json", - "@type": "sc:Canvas", - "label": "46r (289r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_046r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_046r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_046r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046v.json", - "@type": "sc:Canvas", - "label": "46v (289v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_046v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_046v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_046v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_046v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047r.json", - "@type": "sc:Canvas", - "label": "47r (290r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_047r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_047r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_047r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047v.json", - "@type": "sc:Canvas", - "label": "47v (290v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_047v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_047v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_047v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_047v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048r.json", - "@type": "sc:Canvas", - "label": "48r (291r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_048r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_048r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_048r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048v.json", - "@type": "sc:Canvas", - "label": "48v (291v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_048v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_048v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_048v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_048v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049r.json", - "@type": "sc:Canvas", - "label": "49r (292r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_049r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_049r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_049r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049v.json", - "@type": "sc:Canvas", - "label": "49v (292v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_049v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_049v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_049v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_049v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045r.json", - "@type": "sc:Canvas", - "label": "45r (293r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_045r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_045r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_045r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045v.json", - "@type": "sc:Canvas", - "label": "45v (293v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_045v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_045v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_045v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_045v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050r.json", - "@type": "sc:Canvas", - "label": "50r (294r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_050r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_050r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_050r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050v.json", - "@type": "sc:Canvas", - "label": "50v (294v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_050v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_050v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_050v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_050v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051r.json", - "@type": "sc:Canvas", - "label": "51r (295r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_051r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_051r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_051r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051v.json", - "@type": "sc:Canvas", - "label": "51v (295v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_051v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_051v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_051v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_051v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052r.json", - "@type": "sc:Canvas", - "label": "52r (296r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_052r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_052r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_052r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052v.json", - "@type": "sc:Canvas", - "label": "52v (296v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_052v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_052v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_052v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_052v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-79", - "@type": "sc:Canvas", - "label": "Lacune (297r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-80", - "@type": "sc:Canvas", - "label": "Lacune (297v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-81", - "@type": "sc:Canvas", - "label": "Lacune (298r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-82", - "@type": "sc:Canvas", - "label": "Lacune (298v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-83", - "@type": "sc:Canvas", - "label": "Lacune (299r)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/canvas/canvas-84", - "@type": "sc:Canvas", - "label": "Lacune (299v)", - "width": 860, - "height": 1200 - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053r.json", - "@type": "sc:Canvas", - "label": "53r (300r)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_053r.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053r.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_053r.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_053r.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - }, - { - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053v.json", - "@type": "sc:Canvas", - "label": "53v (300v)", - "height": 6496, - "width": 4872, - "images": [{ - "@id": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/annotation/bge-lat0016_053v.json", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.e-codices.unifr.ch/metadata/iiif/sl-0001/canvas/bge-lat0016_053v.json", - "resource": { - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_053v.jp2/full/full/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 6496, - "width": 4872, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "http://www.e-codices.unifr.ch/loris/bge/bge-lat0016/bge-lat0016_053v.jp2", - "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1" - } - } - }] - } - ] - }] -} diff --git a/spec/fixtures/Richardson7manifest.json b/spec/fixtures/Richardson7manifest.json deleted file mode 100644 index 93b2b5ee172d5b4b7d6a640e463e45ab05008c87..0000000000000000000000000000000000000000 --- a/spec/fixtures/Richardson7manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"attribution": "Provided by Harvard University", "structures": [{"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981100.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981240.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981242.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981244.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981246.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981248.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981250.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981252.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981254.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981256.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981258.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981260.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981262.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981264.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981266.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981268.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981270.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981272.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981274.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981276.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981278.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981280.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981282.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981284.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981606.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981608.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981610.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981612.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981614.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981616.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981618.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981620.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981622.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981624.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981626.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981628.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981630.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981632.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981634.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981636.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981638.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981640.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981642.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981644.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981646.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981648.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981650.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981652.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981654.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981656.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981658.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981660.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981662.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981664.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981666.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981668.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981670.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981672.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981674.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981676.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981678.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981680.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981682.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981684.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981686.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981688.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981690.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981692.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981694.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981696.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981698.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981700.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981702.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981704.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981706.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981708.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981710.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981712.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981714.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981716.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981718.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981720.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981722.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981724.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981726.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981728.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981730.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981732.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981734.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981736.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981738.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981740.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981742.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981744.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981746.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981748.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981750.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981752.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981754.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981756.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981758.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981760.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981762.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981764.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981766.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981768.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981770.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981772.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981774.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981776.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981778.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981780.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981782.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981784.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981786.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981788.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981790.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981792.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981794.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981796.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981798.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981800.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981802.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981804.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981806.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981808.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981810.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981812.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981814.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981816.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981818.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981820.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981822.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981824.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981826.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981828.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981830.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981832.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981834.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981836.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981838.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981840.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981842.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981844.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981846.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981848.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981850.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981852.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981854.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981856.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981858.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981860.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981862.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981864.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981866.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981868.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981870.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981872.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981874.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981876.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981878.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981880.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981882.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981884.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981886.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981888.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981890.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981892.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981894.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981896.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981898.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981900.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981902.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981904.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981906.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981908.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981910.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981912.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981914.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981916.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981918.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981920.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981922.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981924.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981926.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981928.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981930.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981932.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981934.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981936.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981938.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981940.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981942.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981944.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981946.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981948.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981950.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981952.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981954.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981956.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981958.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981960.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981962.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981964.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981966.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981968.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981970.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981972.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981974.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981976.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981978.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981980.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981982.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981984.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981986.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981988.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981990.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981992.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981994.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981996.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981998.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982000.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982002.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982004.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982006.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982008.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982010.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982012.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982014.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982016.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982018.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982020.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982022.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982024.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982026.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982028.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982030.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982032.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982034.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982036.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982038.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982040.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982042.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982044.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982046.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982048.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982050.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json"], "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@type": "sc:Range", "label": "Table of Contents"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981100.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1.json", "@type": "sc:Range", "label": "Front Matter"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1-1.json", "@type": "sc:Range", "label": "Front cover"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1-2.json", "@type": "sc:Range", "label": "Inside front cover"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1-3.json", "@type": "sc:Range", "label": "Fly leaf (1)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981100.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-1-4.json", "@type": "sc:Range", "label": "Fly leaf (2)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@type": "sc:Range", "label": "Calendar (ff. 1-12v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-1.json", "@type": "sc:Range", "label": "January (ff. 1-1v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-1-1.json", "@type": "sc:Range", "label": "f. 1: Aquarius - Man eating and drinking"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-1-2.json", "@type": "sc:Range", "label": "f. 1v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-2.json", "@type": "sc:Range", "label": "February (ff. 2-2v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-2-1.json", "@type": "sc:Range", "label": "f. 2: Pisces - Man warming his feet"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-2-2.json", "@type": "sc:Range", "label": "f. 2v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-3.json", "@type": "sc:Range", "label": "March (ff. 3-3v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-3-1.json", "@type": "sc:Range", "label": "f. 3: Ares - Man cutting wood"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-3-2.json", "@type": "sc:Range", "label": "f. 3v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-4.json", "@type": "sc:Range", "label": "April (ff. 4-4v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-4-1.json", "@type": "sc:Range", "label": "f. 4: Taurus - Man carrying trees"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-4-2.json", "@type": "sc:Range", "label": "f. 4v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-5.json", "@type": "sc:Range", "label": "May (ff. 5-5v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-5-1.json", "@type": "sc:Range", "label": "f. 5: Gemini - Falconer on horseback"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-5-2.json", "@type": "sc:Range", "label": "f. 5v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-6.json", "@type": "sc:Range", "label": "June (ff. 6-6v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-6-1.json", "@type": "sc:Range", "label": "f. 6: Cancer - Man cutting hay"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-6-2.json", "@type": "sc:Range", "label": "f. 6v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-7.json", "@type": "sc:Range", "label": "July (ff. 7-7v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-7-1.json", "@type": "sc:Range", "label": "f. 7: Leo - Man harvesting crops"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-7-2.json", "@type": "sc:Range", "label": "f. 7v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-8.json", "@type": "sc:Range", "label": "August (ff. 8-8v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-8-1.json", "@type": "sc:Range", "label": "f. 8: Virgo - Man threshing"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-8-2.json", "@type": "sc:Range", "label": "f. 8v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-9.json", "@type": "sc:Range", "label": "September (ff. 9-9v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-9-1.json", "@type": "sc:Range", "label": "f. 9: Libra - Man crushing grapes"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-9-2.json", "@type": "sc:Range", "label": "f. 9v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-10.json", "@type": "sc:Range", "label": "October (ff. 10-10v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-10-1.json", "@type": "sc:Range", "label": "f. 10: Scorpio - Man sowing seeds"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-10-2.json", "@type": "sc:Range", "label": "f. 10v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-11.json", "@type": "sc:Range", "label": "November (ff. 11-11v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-11-1.json", "@type": "sc:Range", "label": "f. 11: Sagittarius - Man feeding hogs"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-11-2.json", "@type": "sc:Range", "label": "f. 11v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-12.json", "@type": "sc:Range", "label": "December (ff. 12-12v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-12-1.json", "@type": "sc:Range", "label": "f. 12: Capricorn - Man butchering pig"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-2-12-2.json", "@type": "sc:Range", "label": "f. 12v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3.json", "@type": "sc:Range", "label": "Sequences of the Gospels (ff. 13-20v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1.json", "@type": "sc:Range", "label": "Sequence from John (ff. 13-14v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1-1.json", "@type": "sc:Range", "label": "f. 13: John writing on Patmos"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1-2.json", "@type": "sc:Range", "label": "f. 13v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1-3.json", "@type": "sc:Range", "label": "f. 14."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-1-4.json", "@type": "sc:Range", "label": "f. 14v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2.json", "@type": "sc:Range", "label": "Sequence from Matthew (ff. 15-16v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2-1.json", "@type": "sc:Range", "label": "f. 15: Matthew writing"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2-2.json", "@type": "sc:Range", "label": "f. 15v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2-3.json", "@type": "sc:Range", "label": "f. 16."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-2-4.json", "@type": "sc:Range", "label": "f. 16v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3.json", "@type": "sc:Range", "label": "Sequence from Luke (ff. 17-18v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3-1.json", "@type": "sc:Range", "label": "f. 17: Luke painting the Virgin and Child"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3-2.json", "@type": "sc:Range", "label": "f. 17v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3-3.json", "@type": "sc:Range", "label": "f. 18."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-3-4.json", "@type": "sc:Range", "label": "f. 18v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4.json", "@type": "sc:Range", "label": "Sequence from Mark (ff. 19-20v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4-1.json", "@type": "sc:Range", "label": "f. 19: Mark writing"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4-2.json", "@type": "sc:Range", "label": "f. 19v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4-3.json", "@type": "sc:Range", "label": "f. 20."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-3-4-4.json", "@type": "sc:Range", "label": "f. 20v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@type": "sc:Range", "label": "Hours of the Cross (ff. 21-35)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1.json", "@type": "sc:Range", "label": "Matins (ff. 21-23v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1-1.json", "@type": "sc:Range", "label": "f. 21: Betrayal of Christ - Agony in the Garden - Christ before Annas - Christ before Caiphas - Apostles"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1-2.json", "@type": "sc:Range", "label": "f. 21v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1-3.json", "@type": "sc:Range", "label": "f. 22."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-1-4.json", "@type": "sc:Range", "label": "f. 22v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2.json", "@type": "sc:Range", "label": "Prime (ff. 23-24v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2-1.json", "@type": "sc:Range", "label": "f. 23: Christ before Pilate"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2-2.json", "@type": "sc:Range", "label": "f. 23v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2-3.json", "@type": "sc:Range", "label": "f. 24."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-2-4.json", "@type": "sc:Range", "label": "f. 24v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3.json", "@type": "sc:Range", "label": "Terce (ff. 25-26v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3-1.json", "@type": "sc:Range", "label": "f. 25: Flagellation"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3-2.json", "@type": "sc:Range", "label": "f. 25v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3-3.json", "@type": "sc:Range", "label": "f. 26."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-3-4.json", "@type": "sc:Range", "label": "f. 26v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4.json", "@type": "sc:Range", "label": "Sext (ff. 27-28v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4-1.json", "@type": "sc:Range", "label": "f. 27: Christ carrying the cross"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4-2.json", "@type": "sc:Range", "label": "f. 27v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4-3.json", "@type": "sc:Range", "label": "f. 28."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-4-4.json", "@type": "sc:Range", "label": "f. 28v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5.json", "@type": "sc:Range", "label": "None (ff. 29-30v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5-1.json", "@type": "sc:Range", "label": "f. 29: Crucifixion"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5-2.json", "@type": "sc:Range", "label": "f. 29v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5-3.json", "@type": "sc:Range", "label": "f. 30."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-5-4.json", "@type": "sc:Range", "label": "f. 30v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6.json", "@type": "sc:Range", "label": "Vespers (ff. 31-32v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6-1.json", "@type": "sc:Range", "label": "f. 31: Deposition"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6-2.json", "@type": "sc:Range", "label": "f. 31v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6-3.json", "@type": "sc:Range", "label": "f. 32."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-6-4.json", "@type": "sc:Range", "label": "f. 32v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@type": "sc:Range", "label": "Compline (ff. 33-35)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7-1.json", "@type": "sc:Range", "label": "f. 33: Entombment"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7-2.json", "@type": "sc:Range", "label": "f. 33v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7-3.json", "@type": "sc:Range", "label": "f. 34."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7-4.json", "@type": "sc:Range", "label": "f. 34v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-4-7-5.json", "@type": "sc:Range", "label": "f. 35."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981240.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981242.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981244.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5.json", "@type": "sc:Range", "label": "Passion (ff. 35v-36v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981240.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5-1.json", "@type": "sc:Range", "label": "f. 35v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981242.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5-2.json", "@type": "sc:Range", "label": "f. 36."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981244.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-5-3.json", "@type": "sc:Range", "label": "f. 36v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981246.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981248.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981250.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981252.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981254.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981256.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981258.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981260.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981262.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981264.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981266.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981268.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981270.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981272.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981274.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981276.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981278.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981280.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981282.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981284.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@type": "sc:Range", "label": "Hours of the Holy Spirit (ff. 37-46v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981246.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-1.json", "@type": "sc:Range", "label": "f. 37: Pentecost"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981248.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-2.json", "@type": "sc:Range", "label": "f. 37v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981250.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-3.json", "@type": "sc:Range", "label": "f. 38."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981252.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-4.json", "@type": "sc:Range", "label": "f. 38v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981254.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-5.json", "@type": "sc:Range", "label": "f. 39."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981256.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-6.json", "@type": "sc:Range", "label": "f. 39v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981258.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-7.json", "@type": "sc:Range", "label": "f. 40."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981260.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-8.json", "@type": "sc:Range", "label": "f. 40v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981262.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-9.json", "@type": "sc:Range", "label": "f. 41."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981264.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-10.json", "@type": "sc:Range", "label": "f. 41v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981266.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-11.json", "@type": "sc:Range", "label": "f. 42."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981268.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-12.json", "@type": "sc:Range", "label": "f. 42v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981270.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-13.json", "@type": "sc:Range", "label": "f. 43."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981272.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-14.json", "@type": "sc:Range", "label": "f. 43v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981274.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-15.json", "@type": "sc:Range", "label": "f. 44."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981276.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-16.json", "@type": "sc:Range", "label": "f. 44v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981278.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-17.json", "@type": "sc:Range", "label": "f. 45."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981280.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-18.json", "@type": "sc:Range", "label": "f. 45v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981282.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-19.json", "@type": "sc:Range", "label": "f. 46."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981284.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-6-20.json", "@type": "sc:Range", "label": "f. 46v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@type": "sc:Range", "label": "Hours of the Virgin (ff. 47-126v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@type": "sc:Range", "label": "Matins (ff. 47-62v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-1.json", "@type": "sc:Range", "label": "f. 47: The Annunciation - Bethrothal of Mary and Joseph - Mary weaving - Birth of the Virgin - Joachim in prayer"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-2.json", "@type": "sc:Range", "label": "f. 47v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-3.json", "@type": "sc:Range", "label": "f. 48."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-4.json", "@type": "sc:Range", "label": "f. 48v: Psalm 94"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-5.json", "@type": "sc:Range", "label": "f. 49."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-6.json", "@type": "sc:Range", "label": "f. 49v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-7.json", "@type": "sc:Range", "label": "f. 50."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-8.json", "@type": "sc:Range", "label": "f. 50v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-9.json", "@type": "sc:Range", "label": "f. 51: Psalm 8"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-10.json", "@type": "sc:Range", "label": "f. 51v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-11.json", "@type": "sc:Range", "label": "f. 52."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-12.json", "@type": "sc:Range", "label": "f. 52v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-13.json", "@type": "sc:Range", "label": "f. 53."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-14.json", "@type": "sc:Range", "label": "f. 53v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-15.json", "@type": "sc:Range", "label": "f. 54: Psalm 23"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-16.json", "@type": "sc:Range", "label": "f. 54v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-17.json", "@type": "sc:Range", "label": "f. 55."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-18.json", "@type": "sc:Range", "label": "f. 55v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-19.json", "@type": "sc:Range", "label": "f. 56."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-20.json", "@type": "sc:Range", "label": "f. 56v: First Lesson"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-21.json", "@type": "sc:Range", "label": "f. 57."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-22.json", "@type": "sc:Range", "label": "f. 57v: Second Lesson"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-23.json", "@type": "sc:Range", "label": "f. 58."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-24.json", "@type": "sc:Range", "label": "f. 58v: Third Lesson"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-25.json", "@type": "sc:Range", "label": "f. 59."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-26.json", "@type": "sc:Range", "label": "f. 59v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-27.json", "@type": "sc:Range", "label": "f. 60."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-28.json", "@type": "sc:Range", "label": "f. 60v: Hymn: Te deum laudamus"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-29.json", "@type": "sc:Range", "label": "f. 61."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-30.json", "@type": "sc:Range", "label": "f. 61v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-31.json", "@type": "sc:Range", "label": "f. 62."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-1-32.json", "@type": "sc:Range", "label": "f. 62v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@type": "sc:Range", "label": "Lauds (ff. 63-76v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-1.json", "@type": "sc:Range", "label": "f. 63: The Visitation"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-2.json", "@type": "sc:Range", "label": "f. 63v: Psalm 92"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-3.json", "@type": "sc:Range", "label": "f. 64."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-4.json", "@type": "sc:Range", "label": "f. 64v: Psalm 99"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-5.json", "@type": "sc:Range", "label": "f. 65: Psalm 62"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-6.json", "@type": "sc:Range", "label": "f. 65v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-7.json", "@type": "sc:Range", "label": "f. 66."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-8.json", "@type": "sc:Range", "label": "f. 66v: Psalm 66"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-9.json", "@type": "sc:Range", "label": "f. 67."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-10.json", "@type": "sc:Range", "label": "f. 67v: Canticle of the Three Children (Dan. 3:57-88)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-11.json", "@type": "sc:Range", "label": "f. 68."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-12.json", "@type": "sc:Range", "label": "f. 68v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-13.json", "@type": "sc:Range", "label": "f. 69: Psalm 148"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-14.json", "@type": "sc:Range", "label": "f. 69v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-15.json", "@type": "sc:Range", "label": "f. 70."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-16.json", "@type": "sc:Range", "label": "f. 70v: Psalm 149"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-17.json", "@type": "sc:Range", "label": "f. 71."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-18.json", "@type": "sc:Range", "label": "f. 71v: Psalm 150"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-19.json", "@type": "sc:Range", "label": "f. 72."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-20.json", "@type": "sc:Range", "label": "f. 72v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-21.json", "@type": "sc:Range", "label": "f. 73: Hymn: O gloriosa domina"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-22.json", "@type": "sc:Range", "label": "f. 73v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-23.json", "@type": "sc:Range", "label": "f. 74."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-24.json", "@type": "sc:Range", "label": "f. 74v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-25.json", "@type": "sc:Range", "label": "f. 75."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-26.json", "@type": "sc:Range", "label": "f. 75v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-27.json", "@type": "sc:Range", "label": "f. 76."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-2-28.json", "@type": "sc:Range", "label": "f. 76v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@type": "sc:Range", "label": "Prime (ff. 77-86)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-1.json", "@type": "sc:Range", "label": "f. 77: The Nativity"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-2.json", "@type": "sc:Range", "label": "f. 77v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-3.json", "@type": "sc:Range", "label": "f. 78."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-4.json", "@type": "sc:Range", "label": "f. 78v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-5.json", "@type": "sc:Range", "label": "f. 79: Psalm 53"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-6.json", "@type": "sc:Range", "label": "f. 79v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-7.json", "@type": "sc:Range", "label": "f. 80: Psalm 116"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-8.json", "@type": "sc:Range", "label": "f. 80v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-9.json", "@type": "sc:Range", "label": "f. 81."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-10.json", "@type": "sc:Range", "label": "f. 81v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-11.json", "@type": "sc:Range", "label": "f. 82."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-12.json", "@type": "sc:Range", "label": "f. 82v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-13.json", "@type": "sc:Range", "label": "f. 83."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-14.json", "@type": "sc:Range", "label": "f. 83v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-15.json", "@type": "sc:Range", "label": "f. 84."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-16.json", "@type": "sc:Range", "label": "f. 84v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-17.json", "@type": "sc:Range", "label": "f. 85."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-18.json", "@type": "sc:Range", "label": "f. 85v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-3-19.json", "@type": "sc:Range", "label": "f. 86."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@type": "sc:Range", "label": "Terce (ff. 86v-92v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-1.json", "@type": "sc:Range", "label": "f. 86v: Annunciation to the shepherds"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-2.json", "@type": "sc:Range", "label": "f. 87."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-3.json", "@type": "sc:Range", "label": "f. 87v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-4.json", "@type": "sc:Range", "label": "f. 88: Psalm 119"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-5.json", "@type": "sc:Range", "label": "f. 88v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-6.json", "@type": "sc:Range", "label": "f. 89: Psalm 120"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-7.json", "@type": "sc:Range", "label": "f. 89v: Psalm 121"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-8.json", "@type": "sc:Range", "label": "f. 90."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-9.json", "@type": "sc:Range", "label": "f. 90v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-10.json", "@type": "sc:Range", "label": "f. 91."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-11.json", "@type": "sc:Range", "label": "f. 91v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-12.json", "@type": "sc:Range", "label": "f. 92."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-4-13.json", "@type": "sc:Range", "label": "f. 92v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@type": "sc:Range", "label": "Sext (ff. 93-98v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-1.json", "@type": "sc:Range", "label": "f. 93: The Adoration of the Magi"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-2.json", "@type": "sc:Range", "label": "f. 93v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-3.json", "@type": "sc:Range", "label": "f. 94: Psalm 122"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-4.json", "@type": "sc:Range", "label": "f. 94v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-5.json", "@type": "sc:Range", "label": "f. 95: Psalm 123"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-6.json", "@type": "sc:Range", "label": "f. 95v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-7.json", "@type": "sc:Range", "label": "f. 96: Psalm 124"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-8.json", "@type": "sc:Range", "label": "f. 96v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-9.json", "@type": "sc:Range", "label": "f. 97."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-10.json", "@type": "sc:Range", "label": "f. 97v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-11.json", "@type": "sc:Range", "label": "f. 98."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-5-12.json", "@type": "sc:Range", "label": "f. 98v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@type": "sc:Range", "label": "None (ff. 99-105v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-1.json", "@type": "sc:Range", "label": "f. 99: Presentation in the temple"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-2.json", "@type": "sc:Range", "label": "f. 99v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-3.json", "@type": "sc:Range", "label": "f. 100: Psalm 125"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-4.json", "@type": "sc:Range", "label": "f. 100v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-5.json", "@type": "sc:Range", "label": "f. 101."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-6.json", "@type": "sc:Range", "label": "f. 101v: Psalm 126"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-7.json", "@type": "sc:Range", "label": "f. 102."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-8.json", "@type": "sc:Range", "label": "f. 102v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-9.json", "@type": "sc:Range", "label": "f. 103."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-10.json", "@type": "sc:Range", "label": "f. 103v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-11.json", "@type": "sc:Range", "label": "f. 104."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-12.json", "@type": "sc:Range", "label": "f. 104v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-13.json", "@type": "sc:Range", "label": "f. 105."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-6-14.json", "@type": "sc:Range", "label": "f. 105v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@type": "sc:Range", "label": "Vespers (ff. 106-115v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-1.json", "@type": "sc:Range", "label": "f. 106: Flight into Egypt"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-2.json", "@type": "sc:Range", "label": "f. 106v: Psalm 121"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-3.json", "@type": "sc:Range", "label": "f. 107."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-4.json", "@type": "sc:Range", "label": "f. 107v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-5.json", "@type": "sc:Range", "label": "f. 108: Psalm 122"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-6.json", "@type": "sc:Range", "label": "f. 108v: Psalm 126"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-7.json", "@type": "sc:Range", "label": "f. 109."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-8.json", "@type": "sc:Range", "label": "f. 109v: Psalm 124"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-9.json", "@type": "sc:Range", "label": "f. 110."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-10.json", "@type": "sc:Range", "label": "f. 110v: Psalm 125"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-11.json", "@type": "sc:Range", "label": "f. 111."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-12.json", "@type": "sc:Range", "label": "f. 111v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-13.json", "@type": "sc:Range", "label": "f. 112."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-14.json", "@type": "sc:Range", "label": "f. 112v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-15.json", "@type": "sc:Range", "label": "f. 113."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-16.json", "@type": "sc:Range", "label": "f. 113v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-17.json", "@type": "sc:Range", "label": "f. 114."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-18.json", "@type": "sc:Range", "label": "f. 114v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-19.json", "@type": "sc:Range", "label": "f. 115."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-7-20.json", "@type": "sc:Range", "label": "f. 115v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@type": "sc:Range", "label": "Compline (ff. 116-126v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-1.json", "@type": "sc:Range", "label": "f. 116: Coronation of the Virgin"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-2.json", "@type": "sc:Range", "label": "f. 116v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-3.json", "@type": "sc:Range", "label": "f. 117."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-4.json", "@type": "sc:Range", "label": "f. 117v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-5.json", "@type": "sc:Range", "label": "f. 118."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-6.json", "@type": "sc:Range", "label": "f. 118v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-7.json", "@type": "sc:Range", "label": "f. 119: Psalm 128"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-8.json", "@type": "sc:Range", "label": "f. 119v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-9.json", "@type": "sc:Range", "label": "f. 120: Psalm 130"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-10.json", "@type": "sc:Range", "label": "f. 120v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-11.json", "@type": "sc:Range", "label": "f. 121."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-12.json", "@type": "sc:Range", "label": "f. 121v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-13.json", "@type": "sc:Range", "label": "f. 122."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-14.json", "@type": "sc:Range", "label": "f. 122v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-15.json", "@type": "sc:Range", "label": "f. 123."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-16.json", "@type": "sc:Range", "label": "f. 123v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-17.json", "@type": "sc:Range", "label": "f. 124."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-18.json", "@type": "sc:Range", "label": "f. 124v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-19.json", "@type": "sc:Range", "label": "f. 125."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-20.json", "@type": "sc:Range", "label": "f. 125v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-21.json", "@type": "sc:Range", "label": "f. 126."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-7-8-22.json", "@type": "sc:Range", "label": "f. 126v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981606.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981608.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981610.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981612.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981614.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981616.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981618.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981620.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981622.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981624.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981626.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981628.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981630.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981632.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981634.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981636.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981638.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981640.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981642.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981644.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981646.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981648.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981650.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981652.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@type": "sc:Range", "label": "Penitential Psalms (ff. 127-138v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981606.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-1.json", "@type": "sc:Range", "label": "f. 127: David in prayer"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981608.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-2.json", "@type": "sc:Range", "label": "f. 127v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981610.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-3.json", "@type": "sc:Range", "label": "f. 128."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981612.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-4.json", "@type": "sc:Range", "label": "f. 128v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981614.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-5.json", "@type": "sc:Range", "label": "f. 129."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981616.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-6.json", "@type": "sc:Range", "label": "f. 129v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981618.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-7.json", "@type": "sc:Range", "label": "f. 130."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981620.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-8.json", "@type": "sc:Range", "label": "f. 130v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981622.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-9.json", "@type": "sc:Range", "label": "f. 131."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981624.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-10.json", "@type": "sc:Range", "label": "f. 131v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981626.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-11.json", "@type": "sc:Range", "label": "f. 132."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981628.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-12.json", "@type": "sc:Range", "label": "f. 132v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981630.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-13.json", "@type": "sc:Range", "label": "f. 133."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981632.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-14.json", "@type": "sc:Range", "label": "f. 133v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981634.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-15.json", "@type": "sc:Range", "label": "f. 134."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981636.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-16.json", "@type": "sc:Range", "label": "f. 134v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981638.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-17.json", "@type": "sc:Range", "label": "f. 135."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981640.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-18.json", "@type": "sc:Range", "label": "f. 135v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981642.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-19.json", "@type": "sc:Range", "label": "f. 136."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981644.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-20.json", "@type": "sc:Range", "label": "f. 136v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981646.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-21.json", "@type": "sc:Range", "label": "f. 137."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981648.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-22.json", "@type": "sc:Range", "label": "f. 137v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981650.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-23.json", "@type": "sc:Range", "label": "f. 138."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981652.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-8-24.json", "@type": "sc:Range", "label": "f. 138v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981654.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981656.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981658.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981660.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981662.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981664.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981666.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981668.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981670.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981672.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981674.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981676.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981678.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981680.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981682.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@type": "sc:Range", "label": "Litany (ff. 139-146)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981654.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-1.json", "@type": "sc:Range", "label": "f. 139."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981656.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-2.json", "@type": "sc:Range", "label": "f. 139v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981658.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-3.json", "@type": "sc:Range", "label": "f. 140."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981660.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-4.json", "@type": "sc:Range", "label": "f. 140v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981662.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-5.json", "@type": "sc:Range", "label": "f. 141."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981664.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-6.json", "@type": "sc:Range", "label": "f. 141v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981666.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-7.json", "@type": "sc:Range", "label": "f. 142."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981668.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-8.json", "@type": "sc:Range", "label": "f. 142v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981670.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-9.json", "@type": "sc:Range", "label": "f. 143."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981672.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-10.json", "@type": "sc:Range", "label": "f. 143v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981674.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-11.json", "@type": "sc:Range", "label": "f. 144."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981676.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-12.json", "@type": "sc:Range", "label": "f. 144v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981678.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-13.json", "@type": "sc:Range", "label": "f. 145."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981680.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-14.json", "@type": "sc:Range", "label": "f. 145v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981682.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-9-15.json", "@type": "sc:Range", "label": "f. 146."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981684.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981686.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981688.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981690.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981692.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981694.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981696.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981698.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981700.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@type": "sc:Range", "label": "Prayers - Obsecro te (ff. 146v-150v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981684.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-1.json", "@type": "sc:Range", "label": "f. 146v: St. Catherine and male saint with donor couple before the Virgin and Child"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981686.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-2.json", "@type": "sc:Range", "label": "f. 147."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981688.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-3.json", "@type": "sc:Range", "label": "f. 147v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981690.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-4.json", "@type": "sc:Range", "label": "f. 148."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981692.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-5.json", "@type": "sc:Range", "label": "f. 148v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981694.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-6.json", "@type": "sc:Range", "label": "f. 149."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981696.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-7.json", "@type": "sc:Range", "label": "f. 149v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981698.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-8.json", "@type": "sc:Range", "label": "f. 150."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981700.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-10-9.json", "@type": "sc:Range", "label": "f. 150v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981702.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981704.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981706.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981708.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981710.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981712.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981714.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981716.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981718.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981720.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@type": "sc:Range", "label": "Prayers - O intemerata and Other Prayers (151-155v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981702.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-1.json", "@type": "sc:Range", "label": "f. 151: Pieta"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981704.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-2.json", "@type": "sc:Range", "label": "f. 151v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981706.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-3.json", "@type": "sc:Range", "label": "f. 152."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981708.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-4.json", "@type": "sc:Range", "label": "f. 152v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981710.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-5.json", "@type": "sc:Range", "label": "f. 153."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981712.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-6.json", "@type": "sc:Range", "label": "f. 153v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981714.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-7.json", "@type": "sc:Range", "label": "f. 154."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981716.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-8.json", "@type": "sc:Range", "label": "f. 154v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981718.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-9.json", "@type": "sc:Range", "label": "f. 155."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981720.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-11-10.json", "@type": "sc:Range", "label": "f. 155v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981722.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981724.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981726.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981728.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981730.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981732.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981734.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981736.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981738.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981740.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981742.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981744.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981746.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981748.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981750.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@type": "sc:Range", "label": "Suffrages (ff. 156-163)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981722.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-1.json", "@type": "sc:Range", "label": "f. 156: St. Michael - St. Michael fighting the devil"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981724.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-2.json", "@type": "sc:Range", "label": "f. 156v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981726.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-3.json", "@type": "sc:Range", "label": "f. 157."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981728.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-4.json", "@type": "sc:Range", "label": "f. 157v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981730.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-5.json", "@type": "sc:Range", "label": "f. 158: Magdalen - Noli me tangere"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981732.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-6.json", "@type": "sc:Range", "label": "f. 158v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981734.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-7.json", "@type": "sc:Range", "label": "f. 159."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981736.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-8.json", "@type": "sc:Range", "label": "f. 159v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981738.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-9.json", "@type": "sc:Range", "label": "f. 160."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981740.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-10.json", "@type": "sc:Range", "label": "f. 160v: St. Christopher - St. Christopher carrying Christ"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981742.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-11.json", "@type": "sc:Range", "label": "f. 161."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981744.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-12.json", "@type": "sc:Range", "label": "f. 161v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981746.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-13.json", "@type": "sc:Range", "label": "f. 162: St. Sebastian - Martyrdom of St. Sebastian"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981748.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-14.json", "@type": "sc:Range", "label": "f. 162v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981750.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-12-15.json", "@type": "sc:Range", "label": "f. 163."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981752.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981754.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981756.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981758.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981760.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981762.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981764.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981766.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981768.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981770.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981772.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981774.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981776.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981778.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981780.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981782.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981784.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981786.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981788.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981790.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981792.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981794.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981796.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981798.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981800.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981802.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981804.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981806.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981808.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981810.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981812.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981814.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981816.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981818.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981820.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981822.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981824.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981826.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981828.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@type": "sc:Range", "label": "Prayers (ff. 163v-182v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981752.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-1.json", "@type": "sc:Range", "label": "f. 163v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981754.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-2.json", "@type": "sc:Range", "label": "f. 164."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981756.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-3.json", "@type": "sc:Range", "label": "f. 164v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981758.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-4.json", "@type": "sc:Range", "label": "f. 165."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981760.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-5.json", "@type": "sc:Range", "label": "f. 165v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981762.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-6.json", "@type": "sc:Range", "label": "f. 166."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981764.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-7.json", "@type": "sc:Range", "label": "f. 166v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981766.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-8.json", "@type": "sc:Range", "label": "f. 167."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981768.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-9.json", "@type": "sc:Range", "label": "f. 167v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981770.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-10.json", "@type": "sc:Range", "label": "f. 168."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981772.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-11.json", "@type": "sc:Range", "label": "f. 168v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981774.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-12.json", "@type": "sc:Range", "label": "f. 169."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981776.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-13.json", "@type": "sc:Range", "label": "f. 169v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981778.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-14.json", "@type": "sc:Range", "label": "f. 170."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981780.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-15.json", "@type": "sc:Range", "label": "f. 170v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981782.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-16.json", "@type": "sc:Range", "label": "f. 171."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981784.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-17.json", "@type": "sc:Range", "label": "f. 171v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981786.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-18.json", "@type": "sc:Range", "label": "f. 172."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981788.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-19.json", "@type": "sc:Range", "label": "f. 172v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981790.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-20.json", "@type": "sc:Range", "label": "f. 173."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981792.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-21.json", "@type": "sc:Range", "label": "f. 173v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981794.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-22.json", "@type": "sc:Range", "label": "f. 174."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981796.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-23.json", "@type": "sc:Range", "label": "f. 174v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981798.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-24.json", "@type": "sc:Range", "label": "f. 175."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981800.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-25.json", "@type": "sc:Range", "label": "f. 175v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981802.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-26.json", "@type": "sc:Range", "label": "f. 176."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981804.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-27.json", "@type": "sc:Range", "label": "f. 176v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981806.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-28.json", "@type": "sc:Range", "label": "f. 177."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981808.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-29.json", "@type": "sc:Range", "label": "f. 177v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981810.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-30.json", "@type": "sc:Range", "label": "f. 178: Prayers for St. Catherine - Martyrdom of St. Catherine"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981812.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-31.json", "@type": "sc:Range", "label": "f. 178v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981814.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-32.json", "@type": "sc:Range", "label": "f. 179."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981816.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-33.json", "@type": "sc:Range", "label": "f. 179v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981818.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-34.json", "@type": "sc:Range", "label": "f. 180."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981820.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-35.json", "@type": "sc:Range", "label": "f. 180v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981822.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-36.json", "@type": "sc:Range", "label": "f. 181."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981824.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-37.json", "@type": "sc:Range", "label": "f. 181v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981826.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-38.json", "@type": "sc:Range", "label": "f. 182."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981828.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-13-39.json", "@type": "sc:Range", "label": "f. 182v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981830.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981832.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981834.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981836.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981838.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981840.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981842.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981844.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981846.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981848.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981850.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981852.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981854.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981856.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981858.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981860.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981862.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981864.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981866.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981868.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981870.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981872.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981874.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981876.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981878.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981880.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981882.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981884.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981886.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981888.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981890.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981892.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981894.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981896.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981898.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981900.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@type": "sc:Range", "label": "Prayers - Seven Verses of St. Bernard and Other Prayers (ff. 183-199v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981830.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-1.json", "@type": "sc:Range", "label": "f. 183."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981832.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-2.json", "@type": "sc:Range", "label": "f. 183v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981834.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-3.json", "@type": "sc:Range", "label": "f. 184."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981836.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-4.json", "@type": "sc:Range", "label": "f. 184v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981838.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-5.json", "@type": "sc:Range", "label": "f. 185."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981840.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-6.json", "@type": "sc:Range", "label": "f. 185v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981842.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-7.json", "@type": "sc:Range", "label": "f. 186."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981844.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-8.json", "@type": "sc:Range", "label": "f. 186v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981846.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-9.json", "@type": "sc:Range", "label": "f. 187."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981848.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-10.json", "@type": "sc:Range", "label": "f. 187v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981850.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-11.json", "@type": "sc:Range", "label": "f. 188."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981852.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-12.json", "@type": "sc:Range", "label": "f. 188v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981854.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-13.json", "@type": "sc:Range", "label": "f. 189."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981856.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-14.json", "@type": "sc:Range", "label": "f. 189v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981858.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-15.json", "@type": "sc:Range", "label": "f. 190."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981860.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-16.json", "@type": "sc:Range", "label": "f. 190v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981862.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-17.json", "@type": "sc:Range", "label": "f. 191."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981864.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-18.json", "@type": "sc:Range", "label": "f. 191v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981866.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-19.json", "@type": "sc:Range", "label": "f. 192."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981868.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-20.json", "@type": "sc:Range", "label": "f. 192v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981870.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-21.json", "@type": "sc:Range", "label": "f. 193."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981872.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-22.json", "@type": "sc:Range", "label": "f. 193v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981874.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-23.json", "@type": "sc:Range", "label": "f. 194."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981876.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-24.json", "@type": "sc:Range", "label": "f. 194v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981878.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-25.json", "@type": "sc:Range", "label": "f. 195."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981880.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-26.json", "@type": "sc:Range", "label": "f. 195v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981882.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-27.json", "@type": "sc:Range", "label": "f. 196."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981884.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-28.json", "@type": "sc:Range", "label": "f. 196v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981886.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-29.json", "@type": "sc:Range", "label": "f. 197."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981888.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-30.json", "@type": "sc:Range", "label": "f. 197v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981890.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-31.json", "@type": "sc:Range", "label": "f. 198."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981892.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-32.json", "@type": "sc:Range", "label": "f. 198v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981894.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-33.json", "@type": "sc:Range", "label": "f. 199."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981896.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-34.json", "@type": "sc:Range", "label": "f. 199v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981898.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-35.json", "@type": "sc:Range", "label": "f. 200: Blank"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981900.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-14-36.json", "@type": "sc:Range", "label": "f. 200v: Blank"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981902.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981904.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981906.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981908.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981910.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981912.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981914.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981916.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981918.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981920.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981922.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981924.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981926.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981928.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981930.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981932.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981934.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981936.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981938.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981940.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981942.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981944.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981946.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981948.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981950.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981952.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981954.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981956.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981958.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981960.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981962.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981964.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981966.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981968.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981970.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981972.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981974.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981976.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981978.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981980.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981982.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981984.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981986.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981988.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981990.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981992.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981994.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981996.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981998.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982000.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982002.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982004.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982006.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982008.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982010.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982012.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982014.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982016.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982018.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982020.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982022.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982024.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982026.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982028.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982030.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982032.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982034.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982036.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982038.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982040.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982042.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982044.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982046.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982048.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@type": "sc:Range", "label": "Office of the Dead (ff. 201-237v)"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981902.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-1.json", "@type": "sc:Range", "label": "f. 201: Burial service"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981904.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-2.json", "@type": "sc:Range", "label": "f. 201v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981906.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-3.json", "@type": "sc:Range", "label": "f. 202."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981908.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-4.json", "@type": "sc:Range", "label": "f. 202v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981910.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-5.json", "@type": "sc:Range", "label": "f. 203."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981912.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-6.json", "@type": "sc:Range", "label": "f. 203v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981914.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-7.json", "@type": "sc:Range", "label": "f. 204."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981916.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-8.json", "@type": "sc:Range", "label": "f. 204v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981918.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-9.json", "@type": "sc:Range", "label": "f. 205."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981920.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-10.json", "@type": "sc:Range", "label": "f. 205v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981922.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-11.json", "@type": "sc:Range", "label": "f. 206."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981924.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-12.json", "@type": "sc:Range", "label": "f. 206v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981926.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-13.json", "@type": "sc:Range", "label": "f. 207."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981928.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-14.json", "@type": "sc:Range", "label": "f. 207v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981930.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-15.json", "@type": "sc:Range", "label": "f. 208."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981932.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-16.json", "@type": "sc:Range", "label": "f. 208v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981934.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-17.json", "@type": "sc:Range", "label": "f. 209."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981936.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-18.json", "@type": "sc:Range", "label": "f. 209v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981938.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-19.json", "@type": "sc:Range", "label": "f. 210."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981940.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-20.json", "@type": "sc:Range", "label": "f. 210v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981942.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-21.json", "@type": "sc:Range", "label": "f. 211."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981944.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-22.json", "@type": "sc:Range", "label": "f. 211v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981946.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-23.json", "@type": "sc:Range", "label": "f. 212."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981948.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-24.json", "@type": "sc:Range", "label": "f. 212v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981950.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-25.json", "@type": "sc:Range", "label": "f. 213."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981952.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-26.json", "@type": "sc:Range", "label": "f. 213v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981954.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-27.json", "@type": "sc:Range", "label": "f. 214."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981956.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-28.json", "@type": "sc:Range", "label": "f. 214v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981958.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-29.json", "@type": "sc:Range", "label": "f. 215."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981960.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-30.json", "@type": "sc:Range", "label": "f. 215v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981962.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-31.json", "@type": "sc:Range", "label": "f. 216."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981964.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-32.json", "@type": "sc:Range", "label": "f. 216v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981966.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-33.json", "@type": "sc:Range", "label": "f. 217."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981968.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-34.json", "@type": "sc:Range", "label": "f. 217v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981970.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-35.json", "@type": "sc:Range", "label": "f. 218."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981972.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-36.json", "@type": "sc:Range", "label": "f. 218v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981974.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-37.json", "@type": "sc:Range", "label": "f. 219."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981976.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-38.json", "@type": "sc:Range", "label": "f. 219v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981978.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-39.json", "@type": "sc:Range", "label": "f. 220."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981980.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-40.json", "@type": "sc:Range", "label": "f. 220v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981982.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-41.json", "@type": "sc:Range", "label": "f. 221."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981984.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-42.json", "@type": "sc:Range", "label": "f. 221v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981986.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-43.json", "@type": "sc:Range", "label": "f. 222."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981988.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-44.json", "@type": "sc:Range", "label": "f. 222v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981990.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-45.json", "@type": "sc:Range", "label": "f. 223."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981992.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-46.json", "@type": "sc:Range", "label": "f. 223v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981994.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-47.json", "@type": "sc:Range", "label": "f. 224."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981996.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-48.json", "@type": "sc:Range", "label": "f. 224v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981998.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-49.json", "@type": "sc:Range", "label": "f. 225."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982000.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-50.json", "@type": "sc:Range", "label": "f. 225v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982002.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-51.json", "@type": "sc:Range", "label": "f. 226."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982004.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-52.json", "@type": "sc:Range", "label": "f. 226v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982006.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-53.json", "@type": "sc:Range", "label": "f. 227."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982008.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-54.json", "@type": "sc:Range", "label": "f. 227v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982010.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-55.json", "@type": "sc:Range", "label": "f. 228."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982012.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-56.json", "@type": "sc:Range", "label": "f. 228v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982014.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-57.json", "@type": "sc:Range", "label": "f. 229."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982016.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-58.json", "@type": "sc:Range", "label": "f. 229v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982018.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-59.json", "@type": "sc:Range", "label": "f. 230."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982020.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-60.json", "@type": "sc:Range", "label": "f. 230v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982022.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-61.json", "@type": "sc:Range", "label": "f. 231."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982024.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-62.json", "@type": "sc:Range", "label": "f. 231v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982026.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-63.json", "@type": "sc:Range", "label": "f. 232."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982028.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-64.json", "@type": "sc:Range", "label": "f. 232v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982030.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-65.json", "@type": "sc:Range", "label": "f. 233."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982032.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-66.json", "@type": "sc:Range", "label": "f. 233v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982034.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-67.json", "@type": "sc:Range", "label": "f. 234."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982036.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-68.json", "@type": "sc:Range", "label": "f. 234v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982038.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-69.json", "@type": "sc:Range", "label": "f. 235."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982040.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-70.json", "@type": "sc:Range", "label": "f. 235v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982042.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-71.json", "@type": "sc:Range", "label": "f. 236."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982044.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-72.json", "@type": "sc:Range", "label": "f. 236v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982046.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-73.json", "@type": "sc:Range", "label": "f. 237."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982048.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-15-74.json", "@type": "sc:Range", "label": "f. 237v."}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982050.json", "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-16.json", "@type": "sc:Range", "label": "Back Matter"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982050.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-16.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-16-1.json", "@type": "sc:Range", "label": "Inside back cover"}, {"canvases": ["https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json"], "within": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-16.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/range/range-1-16-2.json", "@type": "sc:Range", "label": "Back cover"}], "sequences": [{"canvases": [{"label": "Front cover", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981094"}, "format": "image/jpeg", "height": 5243, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981094/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981094.json", "@type": "oa:Annotation"}], "height": 5243, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981094/full/150,/0/native.jpg"}}, {"label": "Inside front cover", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981096"}, "format": "image/jpeg", "height": 5112, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981096/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981096.json", "@type": "oa:Annotation"}], "height": 5112, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981096/full/150,/0/native.jpg"}}, {"label": "Fly leaf (1)", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981098"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981098/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981098.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981098/full/150,/0/native.jpg"}}, {"label": "Fly leaf (2)", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981100"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981100/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981100.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981100.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981100.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981100/full/150,/0/native.jpg"}}, {"label": "f. 1: Aquarius - Man eating and drinking", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981102"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981102/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981102.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981102.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981102/full/150,/0/native.jpg"}}, {"label": "f. 1v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981104"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981104/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981104.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981104.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981104/full/150,/0/native.jpg"}}, {"label": "f. 2: Pisces - Man warming his feet", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981106"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981106/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981106.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981106.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981106/full/150,/0/native.jpg"}}, {"label": "f. 2v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981108"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981108/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981108.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981108.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981108/full/150,/0/native.jpg"}}, {"label": "f. 3: Ares - Man cutting wood", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981110"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981110/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981110.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981110.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981110/full/150,/0/native.jpg"}}, {"label": "f. 3v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981112"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981112/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981112.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981112.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981112/full/150,/0/native.jpg"}}, {"label": "f. 4: Taurus - Man carrying trees", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981114"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981114/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981114.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981114.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981114/full/150,/0/native.jpg"}}, {"label": "f. 4v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981116"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981116/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981116.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981116.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981116/full/150,/0/native.jpg"}}, {"label": "f. 5: Gemini - Falconer on horseback", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981118"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981118/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981118.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981118.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981118/full/150,/0/native.jpg"}}, {"label": "f. 5v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981120"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981120/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981120.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981120.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981120/full/150,/0/native.jpg"}}, {"label": "f. 6: Cancer - Man cutting hay", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981122"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981122/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981122.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981122.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981122/full/150,/0/native.jpg"}}, {"label": "f. 6v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981124"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981124/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981124.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981124.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981124/full/150,/0/native.jpg"}}, {"label": "f. 7: Leo - Man harvesting crops", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981126"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981126/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981126.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981126.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981126/full/150,/0/native.jpg"}}, {"label": "f. 7v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981128"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981128/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981128.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981128.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981128/full/150,/0/native.jpg"}}, {"label": "f. 8: Virgo - Man threshing", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981130"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981130/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981130.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981130.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981130/full/150,/0/native.jpg"}}, {"label": "f. 8v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981132"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981132/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981132.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981132.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981132/full/150,/0/native.jpg"}}, {"label": "f. 9: Libra - Man crushing grapes", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981134"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981134/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981134.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981134.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981134/full/150,/0/native.jpg"}}, {"label": "f. 9v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981136"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981136/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981136.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981136.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981136/full/150,/0/native.jpg"}}, {"label": "f. 10: Scorpio - Man sowing seeds", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981138"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981138/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981138.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981138.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981138/full/150,/0/native.jpg"}}, {"label": "f. 10v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981140"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981140/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981140.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981140.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981140/full/150,/0/native.jpg"}}, {"label": "f. 11: Sagittarius - Man feeding hogs", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981142"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981142/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981142.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981142.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981142/full/150,/0/native.jpg"}}, {"label": "f. 11v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981144"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981144/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981144.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981144.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981144/full/150,/0/native.jpg"}}, {"label": "f. 12: Capricorn - Man butchering pig", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981146"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981146/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981146.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981146.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981146/full/150,/0/native.jpg"}}, {"label": "f. 12v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981148"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981148/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981148.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981148.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981148/full/150,/0/native.jpg"}}, {"label": "f. 13: John writing on Patmos", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981150"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981150/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981150.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981150.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981150/full/150,/0/native.jpg"}}, {"label": "f. 13v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981152"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981152/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981152.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981152.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981152/full/150,/0/native.jpg"}}, {"label": "f. 14.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981154"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981154/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981154.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981154.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981154/full/150,/0/native.jpg"}}, {"label": "f. 14v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981156"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981156/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981156.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981156.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981156/full/150,/0/native.jpg"}}, {"label": "f. 15: Matthew writing", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981158"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981158/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981158.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981158.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981158/full/150,/0/native.jpg"}}, {"label": "f. 15v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981160"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981160/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981160.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981160.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981160/full/150,/0/native.jpg"}}, {"label": "f. 16.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981162"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981162/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981162.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981162.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981162/full/150,/0/native.jpg"}}, {"label": "f. 16v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981164"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981164/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981164.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981164.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981164/full/150,/0/native.jpg"}}, {"label": "f. 17: Luke painting the Virgin and Child", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981166"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981166/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981166.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981166.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981166/full/150,/0/native.jpg"}}, {"label": "f. 17v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981168"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981168/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981168.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981168.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981168/full/150,/0/native.jpg"}}, {"label": "f. 18.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981170"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981170/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981170.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981170.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981170/full/150,/0/native.jpg"}}, {"label": "f. 18v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981172"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981172/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981172.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981172.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981172/full/150,/0/native.jpg"}}, {"label": "f. 19: Mark writing", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981174"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981174/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981174.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981174.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981174/full/150,/0/native.jpg"}}, {"label": "f. 19v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981176"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981176/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981176.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981176.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981176/full/150,/0/native.jpg"}}, {"label": "f. 20.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981178"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981178/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981178.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981178.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981178/full/150,/0/native.jpg"}}, {"label": "f. 20v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981180"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981180/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981180.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981180.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981180/full/150,/0/native.jpg"}}, {"label": "f. 21: Betrayal of Christ - Agony in the Garden - Christ before Annas - Christ before Caiphas - Apostles", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981182"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981182/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981182.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981182.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981182/full/150,/0/native.jpg"}}, {"label": "f. 21v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981184"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981184/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981184.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981184.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981184/full/150,/0/native.jpg"}}, {"label": "f. 22.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981186"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981186/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981186.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981186.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981186/full/150,/0/native.jpg"}}, {"label": "f. 22v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981188"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981188/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981188.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981188.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981188/full/150,/0/native.jpg"}}, {"label": "f. 23: Christ before Pilate", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981190"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981190/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981190.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981190.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981190/full/150,/0/native.jpg"}}, {"label": "f. 23v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981192"}, "format": "image/jpeg", "height": 5113, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981192/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981192.json", "@type": "oa:Annotation"}], "height": 5113, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981192.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981192/full/150,/0/native.jpg"}}, {"label": "f. 24.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981194"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981194/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981194.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981194.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981194/full/150,/0/native.jpg"}}, {"label": "f. 24v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981196"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981196/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981196.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981196.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981196/full/150,/0/native.jpg"}}, {"label": "f. 25: Flagellation", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981198"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981198/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981198.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981198.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981198/full/150,/0/native.jpg"}}, {"label": "f. 25v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981200"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981200/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981200.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981200.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981200/full/150,/0/native.jpg"}}, {"label": "f. 26.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981202"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981202/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981202.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981202.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981202/full/150,/0/native.jpg"}}, {"label": "f. 26v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981204"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981204/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981204.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981204.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981204/full/150,/0/native.jpg"}}, {"label": "f. 27: Christ carrying the cross", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981206"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981206/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981206.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981206.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981206/full/150,/0/native.jpg"}}, {"label": "f. 27v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981208"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981208/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981208.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981208.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981208/full/150,/0/native.jpg"}}, {"label": "f. 28.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981210"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981210/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981210.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981210.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981210/full/150,/0/native.jpg"}}, {"label": "f. 28v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981212"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981212/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981212.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981212.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981212/full/150,/0/native.jpg"}}, {"label": "f. 29: Crucifixion", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981214"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981214/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981214.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981214.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981214/full/150,/0/native.jpg"}}, {"label": "f. 29v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981216"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981216/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981216.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981216.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981216/full/150,/0/native.jpg"}}, {"label": "f. 30.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981218"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981218/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981218.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981218.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981218/full/150,/0/native.jpg"}}, {"label": "f. 30v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981220"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981220/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981220.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981220.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981220/full/150,/0/native.jpg"}}, {"label": "f. 31: Deposition", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981222"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981222/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981222.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981222.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981222/full/150,/0/native.jpg"}}, {"label": "f. 31v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981224"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981224/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981224.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981224.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981224/full/150,/0/native.jpg"}}, {"label": "f. 32.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981226"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981226/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981226.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981226.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981226/full/150,/0/native.jpg"}}, {"label": "f. 32v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981228"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981228/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981228.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981228.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981228/full/150,/0/native.jpg"}}, {"label": "f. 33: Entombment", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981230"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981230/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981230.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981230.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981230/full/150,/0/native.jpg"}}, {"label": "f. 33v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981232"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981232/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981232.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981232.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981232/full/150,/0/native.jpg"}}, {"label": "f. 34.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981234"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981234/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981234.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981234.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981234/full/150,/0/native.jpg"}}, {"label": "f. 34v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981236"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981236/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981236.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981236.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981236/full/150,/0/native.jpg"}}, {"label": "f. 35.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981238"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981238/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981238.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981238.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981238/full/150,/0/native.jpg"}}, {"label": "f. 35v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981240"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981240/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981240.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981240.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981240.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981240/full/150,/0/native.jpg"}}, {"label": "f. 36.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981242"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981242/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981242.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981242.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981242.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981242/full/150,/0/native.jpg"}}, {"label": "f. 36v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981244"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981244/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981244.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981244.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981244.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981244/full/150,/0/native.jpg"}}, {"label": "f. 37: Pentecost", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981246"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981246/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981246.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981246.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981246.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981246/full/150,/0/native.jpg"}}, {"label": "f. 37v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981248"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981248/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981248.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981248.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981248.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981248/full/150,/0/native.jpg"}}, {"label": "f. 38.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981250"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981250/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981250.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981250.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981250.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981250/full/150,/0/native.jpg"}}, {"label": "f. 38v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981252"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981252/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981252.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981252.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981252.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981252/full/150,/0/native.jpg"}}, {"label": "f. 39.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981254"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981254/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981254.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981254.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981254.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981254/full/150,/0/native.jpg"}}, {"label": "f. 39v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981256"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981256/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981256.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981256.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981256.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981256/full/150,/0/native.jpg"}}, {"label": "f. 40.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981258"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981258/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981258.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981258.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981258.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981258/full/150,/0/native.jpg"}}, {"label": "f. 40v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981260"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981260/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981260.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981260.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981260.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981260/full/150,/0/native.jpg"}}, {"label": "f. 41.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981262"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981262/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981262.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981262.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981262.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981262/full/150,/0/native.jpg"}}, {"label": "f. 41v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981264"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981264/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981264.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981264.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981264.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981264/full/150,/0/native.jpg"}}, {"label": "f. 42.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981266"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981266/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981266.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981266.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981266.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981266/full/150,/0/native.jpg"}}, {"label": "f. 42v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981268"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981268/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981268.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981268.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981268.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981268/full/150,/0/native.jpg"}}, {"label": "f. 43.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981270"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981270/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981270.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981270.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981270.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981270/full/150,/0/native.jpg"}}, {"label": "f. 43v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981272"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981272/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981272.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981272.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981272.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981272/full/150,/0/native.jpg"}}, {"label": "f. 44.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981274"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981274/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981274.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981274.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981274.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981274/full/150,/0/native.jpg"}}, {"label": "f. 44v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981276"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981276/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981276.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981276.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981276.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981276/full/150,/0/native.jpg"}}, {"label": "f. 45.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981278"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981278/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981278.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981278.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981278.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981278/full/150,/0/native.jpg"}}, {"label": "f. 45v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981280"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981280/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981280.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981280.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981280.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981280/full/150,/0/native.jpg"}}, {"label": "f. 46.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981282"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981282/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981282.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981282.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981282.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981282/full/150,/0/native.jpg"}}, {"label": "f. 46v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981284"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981284/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981284.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981284.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981284.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981284/full/150,/0/native.jpg"}}, {"label": "f. 47: The Annunciation - Bethrothal of Mary and Joseph - Mary weaving - Birth of the Virgin - Joachim in prayer", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981286"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981286/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981286.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981286.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981286/full/150,/0/native.jpg"}}, {"label": "f. 47v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981288"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981288/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981288.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981288.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981288/full/150,/0/native.jpg"}}, {"label": "f. 48.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981290"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981290/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981290.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981290.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981290/full/150,/0/native.jpg"}}, {"label": "f. 48v: Psalm 94", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981292"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981292/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981292.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981292.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981292/full/150,/0/native.jpg"}}, {"label": "f. 49.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981294"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981294/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981294.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981294.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981294/full/150,/0/native.jpg"}}, {"label": "f. 49v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981296"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981296/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981296.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981296.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981296/full/150,/0/native.jpg"}}, {"label": "f. 50.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981298"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981298/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981298.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981298.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981298/full/150,/0/native.jpg"}}, {"label": "f. 50v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981300"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981300/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981300.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981300.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981300/full/150,/0/native.jpg"}}, {"label": "f. 51: Psalm 8", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981302"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981302/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981302.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981302.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981302/full/150,/0/native.jpg"}}, {"label": "f. 51v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981304"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981304/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981304.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981304.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981304/full/150,/0/native.jpg"}}, {"label": "f. 52.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981306"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981306/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981306.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981306.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981306/full/150,/0/native.jpg"}}, {"label": "f. 52v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981308"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981308/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981308.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981308.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981308/full/150,/0/native.jpg"}}, {"label": "f. 53.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981310"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981310/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981310.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981310.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981310/full/150,/0/native.jpg"}}, {"label": "f. 53v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981312"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981312/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981312.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981312.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981312/full/150,/0/native.jpg"}}, {"label": "f. 54: Psalm 23", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981314"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981314/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981314.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981314.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981314/full/150,/0/native.jpg"}}, {"label": "f. 54v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981316"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981316/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981316.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981316.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981316/full/150,/0/native.jpg"}}, {"label": "f. 55.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981318"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981318/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981318.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981318.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981318/full/150,/0/native.jpg"}}, {"label": "f. 55v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981320"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981320/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981320.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981320.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981320/full/150,/0/native.jpg"}}, {"label": "f. 56.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981322"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981322/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981322.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981322.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981322/full/150,/0/native.jpg"}}, {"label": "f. 56v: First Lesson", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981324"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981324/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981324.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981324.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981324/full/150,/0/native.jpg"}}, {"label": "f. 57.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981326"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981326/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981326.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981326.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981326/full/150,/0/native.jpg"}}, {"label": "f. 57v: Second Lesson", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981328"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981328/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981328.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981328.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981328/full/150,/0/native.jpg"}}, {"label": "f. 58.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981330"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981330/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981330.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981330.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981330/full/150,/0/native.jpg"}}, {"label": "f. 58v: Third Lesson", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981332"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981332/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981332.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981332.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981332/full/150,/0/native.jpg"}}, {"label": "f. 59.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981334"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981334/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981334.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981334.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981334/full/150,/0/native.jpg"}}, {"label": "f. 59v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981336"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981336/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981336.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981336.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981336/full/150,/0/native.jpg"}}, {"label": "f. 60.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981338"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981338/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981338.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981338.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981338/full/150,/0/native.jpg"}}, {"label": "f. 60v: Hymn: Te deum laudamus", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981340"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981340/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981340.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981340.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981340/full/150,/0/native.jpg"}}, {"label": "f. 61.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981342"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981342/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981342.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981342.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981342/full/150,/0/native.jpg"}}, {"label": "f. 61v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981344"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981344/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981344.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981344.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981344/full/150,/0/native.jpg"}}, {"label": "f. 62.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981346"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981346/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981346.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981346.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981346/full/150,/0/native.jpg"}}, {"label": "f. 62v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981348"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981348/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981348.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981348.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981348/full/150,/0/native.jpg"}}, {"label": "f. 63: The Visitation", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981350"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981350/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981350.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981350.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981350/full/150,/0/native.jpg"}}, {"label": "f. 63v: Psalm 92", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981352"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981352/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981352.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981352.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981352/full/150,/0/native.jpg"}}, {"label": "f. 64.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981354"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981354/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981354.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981354.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981354/full/150,/0/native.jpg"}}, {"label": "f. 64v: Psalm 99", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981356"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981356/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981356.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981356.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981356/full/150,/0/native.jpg"}}, {"label": "f. 65: Psalm 62", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981358"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981358/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981358.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981358.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981358/full/150,/0/native.jpg"}}, {"label": "f. 65v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981360"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981360/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981360.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981360.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981360/full/150,/0/native.jpg"}}, {"label": "f. 66.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981362"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981362/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981362.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981362.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981362/full/150,/0/native.jpg"}}, {"label": "f. 66v: Psalm 66", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981364"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981364/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981364.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981364.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981364/full/150,/0/native.jpg"}}, {"label": "f. 67.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981366"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981366/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981366.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981366.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981366/full/150,/0/native.jpg"}}, {"label": "f. 67v: Canticle of the Three Children (Dan. 3:57-88)", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981368"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981368/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981368.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981368.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981368/full/150,/0/native.jpg"}}, {"label": "f. 68.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981370"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981370/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981370.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981370.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981370/full/150,/0/native.jpg"}}, {"label": "f. 68v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981372"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981372/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981372.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981372.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981372/full/150,/0/native.jpg"}}, {"label": "f. 69: Psalm 148", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981374"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981374/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981374.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981374.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981374/full/150,/0/native.jpg"}}, {"label": "f. 69v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981376"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981376/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981376.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981376.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981376/full/150,/0/native.jpg"}}, {"label": "f. 70.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981378"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981378/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981378.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981378.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981378/full/150,/0/native.jpg"}}, {"label": "f. 70v: Psalm 149", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981380"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981380/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981380.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981380.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981380/full/150,/0/native.jpg"}}, {"label": "f. 71.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981382"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981382/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981382.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981382.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981382/full/150,/0/native.jpg"}}, {"label": "f. 71v: Psalm 150", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981384"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981384/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981384.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981384.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981384/full/150,/0/native.jpg"}}, {"label": "f. 72.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981386"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981386/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981386.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981386.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981386/full/150,/0/native.jpg"}}, {"label": "f. 72v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981388"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981388/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981388.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981388.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981388/full/150,/0/native.jpg"}}, {"label": "f. 73: Hymn: O gloriosa domina", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981390"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981390/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981390.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981390.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981390/full/150,/0/native.jpg"}}, {"label": "f. 73v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981392"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981392/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981392.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981392.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981392/full/150,/0/native.jpg"}}, {"label": "f. 74.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981394"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981394/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981394.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981394.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981394/full/150,/0/native.jpg"}}, {"label": "f. 74v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981396"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981396/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981396.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981396.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981396/full/150,/0/native.jpg"}}, {"label": "f. 75.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981398"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981398/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981398.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981398.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981398/full/150,/0/native.jpg"}}, {"label": "f. 75v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981400"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981400/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981400.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981400.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981400/full/150,/0/native.jpg"}}, {"label": "f. 76.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981402"}, "format": "image/jpeg", "height": 4917, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981402/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981402.json", "@type": "oa:Annotation"}], "height": 4917, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981402.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981402/full/150,/0/native.jpg"}}, {"label": "f. 76v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981404"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981404/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981404.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981404.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981404/full/150,/0/native.jpg"}}, {"label": "f. 77: The Nativity", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981406"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981406/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981406.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981406.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981406/full/150,/0/native.jpg"}}, {"label": "f. 77v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981408"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981408/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981408.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981408.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981408/full/150,/0/native.jpg"}}, {"label": "f. 78.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981410"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981410/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981410.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981410.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981410/full/150,/0/native.jpg"}}, {"label": "f. 78v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981412"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981412/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981412.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981412.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981412/full/150,/0/native.jpg"}}, {"label": "f. 79: Psalm 53", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981414"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981414/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981414.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981414.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981414/full/150,/0/native.jpg"}}, {"label": "f. 79v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981416"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981416/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981416.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981416.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981416/full/150,/0/native.jpg"}}, {"label": "f. 80: Psalm 116", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981418"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981418/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981418.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981418.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981418/full/150,/0/native.jpg"}}, {"label": "f. 80v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981420"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981420/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981420.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981420.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981420/full/150,/0/native.jpg"}}, {"label": "f. 81.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981422"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981422/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981422.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981422.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981422/full/150,/0/native.jpg"}}, {"label": "f. 81v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981424"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981424/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981424.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981424.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981424/full/150,/0/native.jpg"}}, {"label": "f. 82.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981426"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981426/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981426.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981426.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981426/full/150,/0/native.jpg"}}, {"label": "f. 82v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981428"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981428/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981428.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981428.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981428/full/150,/0/native.jpg"}}, {"label": "f. 83.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981430"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981430/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981430.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981430.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981430/full/150,/0/native.jpg"}}, {"label": "f. 83v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981432"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981432/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981432.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981432.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981432/full/150,/0/native.jpg"}}, {"label": "f. 84.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981434"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981434/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981434.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981434.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981434/full/150,/0/native.jpg"}}, {"label": "f. 84v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981436"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981436/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981436.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981436.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981436/full/150,/0/native.jpg"}}, {"label": "f. 85.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981438"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981438/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981438.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981438.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981438/full/150,/0/native.jpg"}}, {"label": "f. 85v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981440"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981440/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981440.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981440.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981440/full/150,/0/native.jpg"}}, {"label": "f. 86.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981442"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981442/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981442.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981442.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981442/full/150,/0/native.jpg"}}, {"label": "f. 86v: Annunciation to the shepherds", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981444"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981444/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981444.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981444.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981444/full/150,/0/native.jpg"}}, {"label": "f. 87.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981446"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981446/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981446.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981446.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981446/full/150,/0/native.jpg"}}, {"label": "f. 87v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981448"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981448/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981448.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981448.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981448/full/150,/0/native.jpg"}}, {"label": "f. 88: Psalm 119", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981450"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981450/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981450.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981450.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981450/full/150,/0/native.jpg"}}, {"label": "f. 88v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981452"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981452/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981452.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981452.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981452/full/150,/0/native.jpg"}}, {"label": "f. 89: Psalm 120", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981454"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981454/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981454.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981454.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981454/full/150,/0/native.jpg"}}, {"label": "f. 89v: Psalm 121", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981456"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981456/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981456.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981456.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981456/full/150,/0/native.jpg"}}, {"label": "f. 90.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981458"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981458/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981458.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981458.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981458/full/150,/0/native.jpg"}}, {"label": "f. 90v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981460"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981460/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981460.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981460.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981460/full/150,/0/native.jpg"}}, {"label": "f. 91.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981462"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981462/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981462.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981462.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981462/full/150,/0/native.jpg"}}, {"label": "f. 91v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981464"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981464/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981464.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981464.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981464/full/150,/0/native.jpg"}}, {"label": "f. 92.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981466"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981466/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981466.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981466.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981466/full/150,/0/native.jpg"}}, {"label": "f. 92v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981468"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981468/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981468.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981468.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981468/full/150,/0/native.jpg"}}, {"label": "f. 93: The Adoration of the Magi", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981470"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981470/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981470.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981470.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981470/full/150,/0/native.jpg"}}, {"label": "f. 93v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981472"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981472/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981472.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981472.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981472/full/150,/0/native.jpg"}}, {"label": "f. 94: Psalm 122", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981474"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981474/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981474.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981474.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981474/full/150,/0/native.jpg"}}, {"label": "f. 94v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981476"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981476/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981476.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981476.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981476/full/150,/0/native.jpg"}}, {"label": "f. 95: Psalm 123", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981478"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981478/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981478.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981478.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981478/full/150,/0/native.jpg"}}, {"label": "f. 95v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981480"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981480/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981480.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981480.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981480/full/150,/0/native.jpg"}}, {"label": "f. 96: Psalm 124", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981482"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981482/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981482.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981482.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981482/full/150,/0/native.jpg"}}, {"label": "f. 96v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981484"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981484/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981484.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981484.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981484/full/150,/0/native.jpg"}}, {"label": "f. 97.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981486"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981486/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981486.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981486.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981486/full/150,/0/native.jpg"}}, {"label": "f. 97v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981488"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981488/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981488.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981488.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981488/full/150,/0/native.jpg"}}, {"label": "f. 98.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981490"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981490/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981490.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981490.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981490/full/150,/0/native.jpg"}}, {"label": "f. 98v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981492"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981492/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981492.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981492.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981492/full/150,/0/native.jpg"}}, {"label": "f. 99: Presentation in the temple", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981494"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981494/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981494.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981494.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981494/full/150,/0/native.jpg"}}, {"label": "f. 99v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981496"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981496/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981496.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981496.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981496/full/150,/0/native.jpg"}}, {"label": "f. 100: Psalm 125", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981498"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981498/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981498.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981498.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981498/full/150,/0/native.jpg"}}, {"label": "f. 100v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981500"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981500/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981500.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981500.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981500/full/150,/0/native.jpg"}}, {"label": "f. 101.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981502"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981502/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981502.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981502.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981502/full/150,/0/native.jpg"}}, {"label": "f. 101v: Psalm 126", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981504"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981504/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981504.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981504.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981504/full/150,/0/native.jpg"}}, {"label": "f. 102.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981506"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981506/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981506.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981506.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981506/full/150,/0/native.jpg"}}, {"label": "f. 102v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981508"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981508/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981508.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981508.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981508/full/150,/0/native.jpg"}}, {"label": "f. 103.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981510"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981510/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981510.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981510.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981510/full/150,/0/native.jpg"}}, {"label": "f. 103v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981512"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981512/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981512.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981512.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981512/full/150,/0/native.jpg"}}, {"label": "f. 104.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981514"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981514/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981514.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981514.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981514/full/150,/0/native.jpg"}}, {"label": "f. 104v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981516"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981516/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981516.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981516.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981516/full/150,/0/native.jpg"}}, {"label": "f. 105.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981518"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981518/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981518.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981518.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981518/full/150,/0/native.jpg"}}, {"label": "f. 105v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981520"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981520/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981520.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981520.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981520/full/150,/0/native.jpg"}}, {"label": "f. 106: Flight into Egypt", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981522"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981522/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981522.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981522/full/150,/0/native.jpg"}}, {"label": "f. 106v: Psalm 121", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981524"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981524/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981524.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981524.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981524/full/150,/0/native.jpg"}}, {"label": "f. 107.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981526"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981526/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981526.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981526.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981526/full/150,/0/native.jpg"}}, {"label": "f. 107v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981528"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981528/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981528.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981528.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981528/full/150,/0/native.jpg"}}, {"label": "f. 108: Psalm 122", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981530"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981530/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981530.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981530.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981530/full/150,/0/native.jpg"}}, {"label": "f. 108v: Psalm 126", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981532"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981532/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981532.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981532.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981532/full/150,/0/native.jpg"}}, {"label": "f. 109.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981534"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981534/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981534.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981534.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981534/full/150,/0/native.jpg"}}, {"label": "f. 109v: Psalm 124", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981536"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981536/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981536.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981536.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981536/full/150,/0/native.jpg"}}, {"label": "f. 110.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981538"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981538/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981538.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981538.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981538/full/150,/0/native.jpg"}}, {"label": "f. 110v: Psalm 125", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981540"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981540/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981540.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981540.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981540/full/150,/0/native.jpg"}}, {"label": "f. 111.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981542"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981542/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981542.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981542.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981542/full/150,/0/native.jpg"}}, {"label": "f. 111v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981544"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981544/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981544.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981544.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981544/full/150,/0/native.jpg"}}, {"label": "f. 112.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981546"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981546/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981546.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981546.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981546/full/150,/0/native.jpg"}}, {"label": "f. 112v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981548"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981548/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981548.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981548.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981548/full/150,/0/native.jpg"}}, {"label": "f. 113.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981550"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981550/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981550.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981550.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981550/full/150,/0/native.jpg"}}, {"label": "f. 113v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981552"}, "format": "image/jpeg", "height": 5062, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981552/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981552.json", "@type": "oa:Annotation"}], "height": 5062, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981552.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981552/full/150,/0/native.jpg"}}, {"label": "f. 114.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981554"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981554/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981554.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981554.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981554/full/150,/0/native.jpg"}}, {"label": "f. 114v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981556"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981556/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981556.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981556.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981556/full/150,/0/native.jpg"}}, {"label": "f. 115.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981558"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981558/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981558.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981558.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981558/full/150,/0/native.jpg"}}, {"label": "f. 115v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981560"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981560/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981560.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981560.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981560/full/150,/0/native.jpg"}}, {"label": "f. 116: Coronation of the Virgin", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981562"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981562/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981562.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981562.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981562/full/150,/0/native.jpg"}}, {"label": "f. 116v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981564"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981564/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981564.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981564.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981564/full/150,/0/native.jpg"}}, {"label": "f. 117.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981566"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981566/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981566.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981566.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981566/full/150,/0/native.jpg"}}, {"label": "f. 117v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981568"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981568/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981568.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981568.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981568/full/150,/0/native.jpg"}}, {"label": "f. 118.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981570"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981570/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981570.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981570.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981570/full/150,/0/native.jpg"}}, {"label": "f. 118v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981572"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981572/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981572.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981572.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981572/full/150,/0/native.jpg"}}, {"label": "f. 119: Psalm 128", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981574"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981574/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981574.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981574.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981574/full/150,/0/native.jpg"}}, {"label": "f. 119v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981576"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981576/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981576.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981576.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981576/full/150,/0/native.jpg"}}, {"label": "f. 120: Psalm 130", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981578"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981578/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981578.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981578.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981578/full/150,/0/native.jpg"}}, {"label": "f. 120v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981580"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981580/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981580.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981580.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981580/full/150,/0/native.jpg"}}, {"label": "f. 121.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981582"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981582/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981582.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981582.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981582/full/150,/0/native.jpg"}}, {"label": "f. 121v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981584"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981584/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981584.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981584.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981584/full/150,/0/native.jpg"}}, {"label": "f. 122.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981586"}, "format": "image/jpeg", "height": 5056, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981586/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981586.json", "@type": "oa:Annotation"}], "height": 5056, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981586.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981586/full/150,/0/native.jpg"}}, {"label": "f. 122v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981588"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981588/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981588.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981588.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981588/full/150,/0/native.jpg"}}, {"label": "f. 123.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981590"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981590/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981590.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981590.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981590/full/150,/0/native.jpg"}}, {"label": "f. 123v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981592"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981592/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981592.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981592.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981592/full/150,/0/native.jpg"}}, {"label": "f. 124.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981594"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981594/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981594.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981594.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981594/full/150,/0/native.jpg"}}, {"label": "f. 124v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981596"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981596/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981596.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981596.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981596/full/150,/0/native.jpg"}}, {"label": "f. 125.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981598"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981598/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981598.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981598.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981598/full/150,/0/native.jpg"}}, {"label": "f. 125v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981600"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981600/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981600.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981600.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981600/full/150,/0/native.jpg"}}, {"label": "f. 126.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981602"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981602/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981602.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981602.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981602/full/150,/0/native.jpg"}}, {"label": "f. 126v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981604"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981604/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981604.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981604.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981604/full/150,/0/native.jpg"}}, {"label": "f. 127: David in prayer", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981606"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981606/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981606.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981606.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981606.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981606/full/150,/0/native.jpg"}}, {"label": "f. 127v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981608"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981608/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981608.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981608.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981608.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981608/full/150,/0/native.jpg"}}, {"label": "f. 128.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981610"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981610/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981610.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981610.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981610.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981610/full/150,/0/native.jpg"}}, {"label": "f. 128v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981612"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981612/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981612.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981612.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981612.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981612/full/150,/0/native.jpg"}}, {"label": "f. 129.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981614"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981614/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981614.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981614.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981614.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981614/full/150,/0/native.jpg"}}, {"label": "f. 129v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981616"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981616/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981616.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981616.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981616.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981616/full/150,/0/native.jpg"}}, {"label": "f. 130.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981618"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981618/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981618.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981618.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981618.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981618/full/150,/0/native.jpg"}}, {"label": "f. 130v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981620"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981620/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981620.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981620.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981620.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981620/full/150,/0/native.jpg"}}, {"label": "f. 131.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981622"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981622/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981622.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981622.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981622.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981622/full/150,/0/native.jpg"}}, {"label": "f. 131v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981624"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981624/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981624.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981624.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981624.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981624/full/150,/0/native.jpg"}}, {"label": "f. 132.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981626"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981626/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981626.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981626.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981626.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981626/full/150,/0/native.jpg"}}, {"label": "f. 132v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981628"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981628/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981628.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981628.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981628.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981628/full/150,/0/native.jpg"}}, {"label": "f. 133.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981630"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981630/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981630.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981630.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981630.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981630/full/150,/0/native.jpg"}}, {"label": "f. 133v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981632"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981632/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981632.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981632.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981632.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981632/full/150,/0/native.jpg"}}, {"label": "f. 134.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981634"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981634/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981634.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981634.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981634.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981634/full/150,/0/native.jpg"}}, {"label": "f. 134v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981636"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981636/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981636.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981636.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981636.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981636/full/150,/0/native.jpg"}}, {"label": "f. 135.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981638"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981638/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981638.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981638.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981638.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981638/full/150,/0/native.jpg"}}, {"label": "f. 135v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981640"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981640/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981640.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981640.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981640.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981640/full/150,/0/native.jpg"}}, {"label": "f. 136.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981642"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981642/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981642.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981642.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981642.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981642/full/150,/0/native.jpg"}}, {"label": "f. 136v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981644"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981644/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981644.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981644.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981644.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981644/full/150,/0/native.jpg"}}, {"label": "f. 137.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981646"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981646/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981646.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981646.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981646.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981646/full/150,/0/native.jpg"}}, {"label": "f. 137v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981648"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981648/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981648.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981648.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981648.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981648/full/150,/0/native.jpg"}}, {"label": "f. 138.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981650"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981650/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981650.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981650.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981650.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981650/full/150,/0/native.jpg"}}, {"label": "f. 138v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981652"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981652/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981652.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981652.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981652.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981652/full/150,/0/native.jpg"}}, {"label": "f. 139.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981654"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981654/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981654.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981654.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981654.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981654/full/150,/0/native.jpg"}}, {"label": "f. 139v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981656"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981656/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981656.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981656.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981656.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981656/full/150,/0/native.jpg"}}, {"label": "f. 140.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981658"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981658/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981658.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981658.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981658.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981658/full/150,/0/native.jpg"}}, {"label": "f. 140v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981660"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981660/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981660.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981660.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981660.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981660/full/150,/0/native.jpg"}}, {"label": "f. 141.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981662"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981662/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981662.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981662.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981662.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981662/full/150,/0/native.jpg"}}, {"label": "f. 141v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981664"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981664/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981664.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981664.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981664.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981664/full/150,/0/native.jpg"}}, {"label": "f. 142.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981666"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981666/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981666.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981666.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981666.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981666/full/150,/0/native.jpg"}}, {"label": "f. 142v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981668"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981668/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981668.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981668.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981668.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981668/full/150,/0/native.jpg"}}, {"label": "f. 143.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981670"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981670/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981670.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981670.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981670.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981670/full/150,/0/native.jpg"}}, {"label": "f. 143v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981672"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981672/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981672.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981672.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981672.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981672/full/150,/0/native.jpg"}}, {"label": "f. 144.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981674"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981674/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981674.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981674.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981674.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981674/full/150,/0/native.jpg"}}, {"label": "f. 144v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981676"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981676/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981676.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981676.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981676.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981676/full/150,/0/native.jpg"}}, {"label": "f. 145.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981678"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981678/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981678.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981678.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981678.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981678/full/150,/0/native.jpg"}}, {"label": "f. 145v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981680"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981680/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981680.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981680.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981680.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981680/full/150,/0/native.jpg"}}, {"label": "f. 146.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981682"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981682/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981682.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981682.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981682.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981682/full/150,/0/native.jpg"}}, {"label": "f. 146v: St. Catherine and male saint with donor couple before the Virgin and Child", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981684"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981684/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981684.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981684.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981684.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981684/full/150,/0/native.jpg"}}, {"label": "f. 147.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981686"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981686/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981686.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981686.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981686.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981686/full/150,/0/native.jpg"}}, {"label": "f. 147v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981688"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981688/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981688.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981688.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981688.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981688/full/150,/0/native.jpg"}}, {"label": "f. 148.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981690"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981690/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981690.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981690.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981690.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981690/full/150,/0/native.jpg"}}, {"label": "f. 148v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981692"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981692/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981692.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981692.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981692.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981692/full/150,/0/native.jpg"}}, {"label": "f. 149.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981694"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981694/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981694.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981694.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981694.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981694/full/150,/0/native.jpg"}}, {"label": "f. 149v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981696"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981696/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981696.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981696.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981696.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981696/full/150,/0/native.jpg"}}, {"label": "f. 150.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981698"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981698/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981698.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981698.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981698.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981698/full/150,/0/native.jpg"}}, {"label": "f. 150v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981700"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981700/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981700.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981700.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981700.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981700/full/150,/0/native.jpg"}}, {"label": "f. 151: Pieta", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981702"}, "format": "image/jpeg", "height": 5045, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981702/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981702.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981702.json", "@type": "oa:Annotation"}], "height": 5045, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981702.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981702/full/150,/0/native.jpg"}}, {"label": "f. 151v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981704"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981704/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981704.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981704.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981704.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981704/full/150,/0/native.jpg"}}, {"label": "f. 152.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981706"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981706/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981706.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981706.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981706.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981706/full/150,/0/native.jpg"}}, {"label": "f. 152v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981708"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981708/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981708.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981708.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981708.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981708/full/150,/0/native.jpg"}}, {"label": "f. 153.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981710"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981710/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981710.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981710.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981710.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981710/full/150,/0/native.jpg"}}, {"label": "f. 153v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981712"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981712/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981712.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981712.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981712.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981712/full/150,/0/native.jpg"}}, {"label": "f. 154.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981714"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981714/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981714.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981714.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981714.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981714/full/150,/0/native.jpg"}}, {"label": "f. 154v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981716"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981716/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981716.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981716.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981716.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981716/full/150,/0/native.jpg"}}, {"label": "f. 155.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981718"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981718/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981718.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981718.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981718.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981718/full/150,/0/native.jpg"}}, {"label": "f. 155v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981720"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981720/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981720.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981720.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981720.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981720/full/150,/0/native.jpg"}}, {"label": "f. 156: St. Michael - St. Michael fighting the devil", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981722"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981722/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981722.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981722.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981722.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981722/full/150,/0/native.jpg"}}, {"label": "f. 156v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981724"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981724/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981724.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981724.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981724.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981724/full/150,/0/native.jpg"}}, {"label": "f. 157.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981726"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981726/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981726.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981726.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981726.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981726/full/150,/0/native.jpg"}}, {"label": "f. 157v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981728"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981728/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981728.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981728.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981728.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981728/full/150,/0/native.jpg"}}, {"label": "f. 158: Magdalen - Noli me tangere", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981730"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981730/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981730.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981730.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981730.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981730/full/150,/0/native.jpg"}}, {"label": "f. 158v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981732"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981732/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981732.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981732.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981732.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981732/full/150,/0/native.jpg"}}, {"label": "f. 159.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981734"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981734/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981734.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981734.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981734.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981734/full/150,/0/native.jpg"}}, {"label": "f. 159v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981736"}, "format": "image/jpeg", "height": 5001, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981736/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981736.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981736.json", "@type": "oa:Annotation"}], "height": 5001, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981736.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981736/full/150,/0/native.jpg"}}, {"label": "f. 160.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981738"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981738/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981738.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981738.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981738.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981738/full/150,/0/native.jpg"}}, {"label": "f. 160v: St. Christopher - St. Christopher carrying Christ", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981740"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981740/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981740.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981740.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981740.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981740/full/150,/0/native.jpg"}}, {"label": "f. 161.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981742"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981742/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981742.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981742.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981742.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981742/full/150,/0/native.jpg"}}, {"label": "f. 161v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981744"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981744/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981744.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981744.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981744.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981744/full/150,/0/native.jpg"}}, {"label": "f. 162: St. Sebastian - Martyrdom of St. Sebastian", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981746"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981746/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981746.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981746.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981746.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981746/full/150,/0/native.jpg"}}, {"label": "f. 162v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981748"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981748/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981748.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981748.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981748.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981748/full/150,/0/native.jpg"}}, {"label": "f. 163.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981750"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981750/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981750.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981750.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981750.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981750/full/150,/0/native.jpg"}}, {"label": "f. 163v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981752"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981752/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981752.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981752.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981752.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981752/full/150,/0/native.jpg"}}, {"label": "f. 164.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981754"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981754/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981754.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981754.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981754.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981754/full/150,/0/native.jpg"}}, {"label": "f. 164v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981756"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981756/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981756.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981756.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981756.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981756/full/150,/0/native.jpg"}}, {"label": "f. 165.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981758"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981758/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981758.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981758.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981758.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981758/full/150,/0/native.jpg"}}, {"label": "f. 165v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981760"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981760/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981760.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981760.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981760.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981760/full/150,/0/native.jpg"}}, {"label": "f. 166.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981762"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981762/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981762.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981762.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981762.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981762/full/150,/0/native.jpg"}}, {"label": "f. 166v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981764"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981764/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981764.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981764.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981764.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981764/full/150,/0/native.jpg"}}, {"label": "f. 167.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981766"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981766/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981766.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981766.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981766.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981766/full/150,/0/native.jpg"}}, {"label": "f. 167v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981768"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981768/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981768.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981768.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981768.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981768/full/150,/0/native.jpg"}}, {"label": "f. 168.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981770"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981770/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981770.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981770.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981770.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981770/full/150,/0/native.jpg"}}, {"label": "f. 168v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981772"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981772/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981772.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981772.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981772.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981772/full/150,/0/native.jpg"}}, {"label": "f. 169.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981774"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981774/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981774.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981774.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981774.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981774/full/150,/0/native.jpg"}}, {"label": "f. 169v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981776"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981776/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981776.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981776.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981776.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981776/full/150,/0/native.jpg"}}, {"label": "f. 170.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981778"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981778/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981778.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981778.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981778.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981778/full/150,/0/native.jpg"}}, {"label": "f. 170v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981780"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981780/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981780.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981780.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981780.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981780/full/150,/0/native.jpg"}}, {"label": "f. 171.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981782"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981782/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981782.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981782.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981782.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981782/full/150,/0/native.jpg"}}, {"label": "f. 171v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981784"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981784/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981784.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981784.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981784.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981784/full/150,/0/native.jpg"}}, {"label": "f. 172.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981786"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981786/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981786.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981786.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981786.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981786/full/150,/0/native.jpg"}}, {"label": "f. 172v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981788"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981788/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981788.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981788.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981788.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981788/full/150,/0/native.jpg"}}, {"label": "f. 173.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981790"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981790/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981790.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981790.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981790.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981790/full/150,/0/native.jpg"}}, {"label": "f. 173v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981792"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981792/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981792.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981792.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981792.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981792/full/150,/0/native.jpg"}}, {"label": "f. 174.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981794"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981794/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981794.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981794.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981794.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981794/full/150,/0/native.jpg"}}, {"label": "f. 174v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981796"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981796/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981796.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981796.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981796.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981796/full/150,/0/native.jpg"}}, {"label": "f. 175.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981798"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981798/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981798.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981798.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981798.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981798/full/150,/0/native.jpg"}}, {"label": "f. 175v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981800"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981800/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981800.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981800.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981800.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981800/full/150,/0/native.jpg"}}, {"label": "f. 176.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981802"}, "format": "image/jpeg", "height": 5051, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981802/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981802.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981802.json", "@type": "oa:Annotation"}], "height": 5051, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981802.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981802/full/150,/0/native.jpg"}}, {"label": "f. 176v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981804"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981804/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981804.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981804.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981804.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981804/full/150,/0/native.jpg"}}, {"label": "f. 177.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981806"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981806/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981806.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981806.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981806.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981806/full/150,/0/native.jpg"}}, {"label": "f. 177v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981808"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981808/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981808.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981808.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981808.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981808/full/150,/0/native.jpg"}}, {"label": "f. 178: Prayers for St. Catherine - Martyrdom of St. Catherine", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981810"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981810/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981810.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981810.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981810.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981810/full/150,/0/native.jpg"}}, {"label": "f. 178v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981812"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981812/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981812.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981812.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981812.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981812/full/150,/0/native.jpg"}}, {"label": "f. 179.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981814"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981814/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981814.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981814.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981814.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981814/full/150,/0/native.jpg"}}, {"label": "f. 179v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981816"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981816/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981816.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981816.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981816.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981816/full/150,/0/native.jpg"}}, {"label": "f. 180.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981818"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981818/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981818.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981818.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981818.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981818/full/150,/0/native.jpg"}}, {"label": "f. 180v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981820"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981820/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981820.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981820.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981820.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981820/full/150,/0/native.jpg"}}, {"label": "f. 181.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981822"}, "format": "image/jpeg", "height": 4984, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981822/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981822.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981822.json", "@type": "oa:Annotation"}], "height": 4984, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981822.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981822/full/150,/0/native.jpg"}}, {"label": "f. 181v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981824"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981824/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981824.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981824.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981824.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981824/full/150,/0/native.jpg"}}, {"label": "f. 182.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981826"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981826/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981826.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981826.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981826.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981826/full/150,/0/native.jpg"}}, {"label": "f. 182v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981828"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981828/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981828.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981828.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981828.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981828/full/150,/0/native.jpg"}}, {"label": "f. 183.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981830"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981830/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981830.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981830.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981830.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981830/full/150,/0/native.jpg"}}, {"label": "f. 183v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981832"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981832/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981832.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981832.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981832.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981832/full/150,/0/native.jpg"}}, {"label": "f. 184.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981834"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981834/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981834.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981834.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981834.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981834/full/150,/0/native.jpg"}}, {"label": "f. 184v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981836"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981836/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981836.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981836.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981836.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981836/full/150,/0/native.jpg"}}, {"label": "f. 185.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981838"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981838/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981838.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981838.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981838.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981838/full/150,/0/native.jpg"}}, {"label": "f. 185v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981840"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981840/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981840.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981840.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981840.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981840/full/150,/0/native.jpg"}}, {"label": "f. 186.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981842"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981842/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981842.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981842.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981842.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981842/full/150,/0/native.jpg"}}, {"label": "f. 186v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981844"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981844/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981844.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981844.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981844.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981844/full/150,/0/native.jpg"}}, {"label": "f. 187.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981846"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981846/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981846.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981846.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981846.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981846/full/150,/0/native.jpg"}}, {"label": "f. 187v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981848"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981848/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981848.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981848.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981848.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981848/full/150,/0/native.jpg"}}, {"label": "f. 188.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981850"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981850/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981850.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981850.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981850.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981850/full/150,/0/native.jpg"}}, {"label": "f. 188v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981852"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981852/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981852.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981852.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981852.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981852/full/150,/0/native.jpg"}}, {"label": "f. 189.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981854"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981854/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981854.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981854.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981854.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981854/full/150,/0/native.jpg"}}, {"label": "f. 189v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981856"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981856/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981856.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981856.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981856.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981856/full/150,/0/native.jpg"}}, {"label": "f. 190.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981858"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981858/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981858.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981858.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981858.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981858/full/150,/0/native.jpg"}}, {"label": "f. 190v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981860"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981860/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981860.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981860.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981860.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981860/full/150,/0/native.jpg"}}, {"label": "f. 191.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981862"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981862/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981862.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981862.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981862.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981862/full/150,/0/native.jpg"}}, {"label": "f. 191v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981864"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981864/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981864.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981864.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981864.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981864/full/150,/0/native.jpg"}}, {"label": "f. 192.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981866"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981866/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981866.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981866.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981866.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981866/full/150,/0/native.jpg"}}, {"label": "f. 192v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981868"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981868/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981868.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981868.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981868.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981868/full/150,/0/native.jpg"}}, {"label": "f. 193.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981870"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981870/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981870.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981870.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981870.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981870/full/150,/0/native.jpg"}}, {"label": "f. 193v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981872"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981872/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981872.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981872.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981872.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981872/full/150,/0/native.jpg"}}, {"label": "f. 194.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981874"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981874/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981874.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981874.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981874.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981874/full/150,/0/native.jpg"}}, {"label": "f. 194v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981876"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981876/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981876.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981876.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981876.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981876/full/150,/0/native.jpg"}}, {"label": "f. 195.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981878"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981878/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981878.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981878.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981878.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981878/full/150,/0/native.jpg"}}, {"label": "f. 195v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981880"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981880/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981880.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981880.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981880.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981880/full/150,/0/native.jpg"}}, {"label": "f. 196.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981882"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981882/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981882.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981882.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981882.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981882/full/150,/0/native.jpg"}}, {"label": "f. 196v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981884"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981884/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981884.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981884.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981884.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981884/full/150,/0/native.jpg"}}, {"label": "f. 197.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981886"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981886/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981886.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981886.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981886.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981886/full/150,/0/native.jpg"}}, {"label": "f. 197v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981888"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981888/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981888.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981888.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981888.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981888/full/150,/0/native.jpg"}}, {"label": "f. 198.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981890"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981890/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981890.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981890.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981890.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981890/full/150,/0/native.jpg"}}, {"label": "f. 198v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981892"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981892/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981892.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981892.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981892.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981892/full/150,/0/native.jpg"}}, {"label": "f. 199.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981894"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981894/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981894.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981894.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981894.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981894/full/150,/0/native.jpg"}}, {"label": "f. 199v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981896"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981896/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981896.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981896.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981896.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981896/full/150,/0/native.jpg"}}, {"label": "f. 200: Blank", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981898"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981898/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981898.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981898.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981898.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981898/full/150,/0/native.jpg"}}, {"label": "f. 200v: Blank", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981900"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981900/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981900.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981900.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981900.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981900/full/150,/0/native.jpg"}}, {"label": "f. 201: Burial service", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981902"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981902/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981902.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981902.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981902.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981902/full/150,/0/native.jpg"}}, {"label": "f. 201v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981904"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981904/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981904.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981904.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981904.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981904/full/150,/0/native.jpg"}}, {"label": "f. 202.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981906"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981906/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981906.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981906.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981906.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981906/full/150,/0/native.jpg"}}, {"label": "f. 202v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981908"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981908/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981908.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981908.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981908.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981908/full/150,/0/native.jpg"}}, {"label": "f. 203.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981910"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981910/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981910.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981910.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981910.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981910/full/150,/0/native.jpg"}}, {"label": "f. 203v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981912"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981912/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981912.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981912.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981912.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981912/full/150,/0/native.jpg"}}, {"label": "f. 204.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981914"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981914/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981914.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981914.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981914.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981914/full/150,/0/native.jpg"}}, {"label": "f. 204v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981916"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981916/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981916.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981916.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981916.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981916/full/150,/0/native.jpg"}}, {"label": "f. 205.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981918"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981918/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981918.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981918.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981918.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981918/full/150,/0/native.jpg"}}, {"label": "f. 205v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981920"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981920/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981920.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981920.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981920.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981920/full/150,/0/native.jpg"}}, {"label": "f. 206.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981922"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981922/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981922.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981922.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981922.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981922/full/150,/0/native.jpg"}}, {"label": "f. 206v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981924"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981924/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981924.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981924.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981924.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981924/full/150,/0/native.jpg"}}, {"label": "f. 207.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981926"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981926/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981926.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981926.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981926.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981926/full/150,/0/native.jpg"}}, {"label": "f. 207v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981928"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981928/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981928.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981928.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981928.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981928/full/150,/0/native.jpg"}}, {"label": "f. 208.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981930"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981930/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981930.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981930.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981930.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981930/full/150,/0/native.jpg"}}, {"label": "f. 208v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981932"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981932/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981932.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981932.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981932.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981932/full/150,/0/native.jpg"}}, {"label": "f. 209.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981934"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981934/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981934.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981934.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981934.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981934/full/150,/0/native.jpg"}}, {"label": "f. 209v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981936"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981936/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981936.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981936.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981936.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981936/full/150,/0/native.jpg"}}, {"label": "f. 210.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981938"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981938/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981938.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981938.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981938.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981938/full/150,/0/native.jpg"}}, {"label": "f. 210v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981940"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981940/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981940.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981940.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981940.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981940/full/150,/0/native.jpg"}}, {"label": "f. 211.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981942"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981942/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981942.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981942.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981942.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981942/full/150,/0/native.jpg"}}, {"label": "f. 211v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981944"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981944/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981944.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981944.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981944.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981944/full/150,/0/native.jpg"}}, {"label": "f. 212.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981946"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981946/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981946.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981946.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981946.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981946/full/150,/0/native.jpg"}}, {"label": "f. 212v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981948"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981948/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981948.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981948.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981948.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981948/full/150,/0/native.jpg"}}, {"label": "f. 213.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981950"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981950/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981950.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981950.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981950.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981950/full/150,/0/native.jpg"}}, {"label": "f. 213v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981952"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981952/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981952.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981952.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981952.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981952/full/150,/0/native.jpg"}}, {"label": "f. 214.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981954"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981954/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981954.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981954.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981954.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981954/full/150,/0/native.jpg"}}, {"label": "f. 214v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981956"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981956/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981956.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981956.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981956.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981956/full/150,/0/native.jpg"}}, {"label": "f. 215.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981958"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981958/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981958.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981958.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981958.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981958/full/150,/0/native.jpg"}}, {"label": "f. 215v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981960"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981960/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981960.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981960.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981960.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981960/full/150,/0/native.jpg"}}, {"label": "f. 216.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981962"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981962/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981962.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981962.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981962.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981962/full/150,/0/native.jpg"}}, {"label": "f. 216v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981964"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981964/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981964.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981964.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981964.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981964/full/150,/0/native.jpg"}}, {"label": "f. 217.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981966"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981966/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981966.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981966.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981966.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981966/full/150,/0/native.jpg"}}, {"label": "f. 217v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981968"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981968/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981968.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981968.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981968.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981968/full/150,/0/native.jpg"}}, {"label": "f. 218.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981970"}, "format": "image/jpeg", "height": 5034, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981970/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981970.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981970.json", "@type": "oa:Annotation"}], "height": 5034, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981970.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981970/full/150,/0/native.jpg"}}, {"label": "f. 218v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981972"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981972/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981972.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981972.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981972.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981972/full/150,/0/native.jpg"}}, {"label": "f. 219.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981974"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981974/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981974.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981974.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981974.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981974/full/150,/0/native.jpg"}}, {"label": "f. 219v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981976"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981976/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981976.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981976.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981976.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981976/full/150,/0/native.jpg"}}, {"label": "f. 220.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981978"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981978/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981978.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981978.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981978.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981978/full/150,/0/native.jpg"}}, {"label": "f. 220v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981980"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981980/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981980.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981980.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981980.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981980/full/150,/0/native.jpg"}}, {"label": "f. 221.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981982"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981982/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981982.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981982.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981982.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981982/full/150,/0/native.jpg"}}, {"label": "f. 221v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981984"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981984/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981984.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981984.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981984.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981984/full/150,/0/native.jpg"}}, {"label": "f. 222.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981986"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981986/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981986.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981986.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981986.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981986/full/150,/0/native.jpg"}}, {"label": "f. 222v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981988"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981988/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981988.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981988.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981988.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981988/full/150,/0/native.jpg"}}, {"label": "f. 223.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981990"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981990/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981990.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981990.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981990.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981990/full/150,/0/native.jpg"}}, {"label": "f. 223v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981992"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981992/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981992.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981992.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981992.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981992/full/150,/0/native.jpg"}}, {"label": "f. 224.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981994"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981994/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981994.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981994.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981994.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981994/full/150,/0/native.jpg"}}, {"label": "f. 224v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981996"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981996/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981996.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981996.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981996.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981996/full/150,/0/native.jpg"}}, {"label": "f. 225.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981998"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981998/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981998.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5981998.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981998.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5981998/full/150,/0/native.jpg"}}, {"label": "f. 225v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982000"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982000/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982000.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982000.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982000.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982000/full/150,/0/native.jpg"}}, {"label": "f. 226.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982002"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982002/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982002.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982002.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982002.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982002/full/150,/0/native.jpg"}}, {"label": "f. 226v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982004"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982004/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982004.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982004.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982004.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982004/full/150,/0/native.jpg"}}, {"label": "f. 227.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982006"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982006/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982006.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982006.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982006.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982006/full/150,/0/native.jpg"}}, {"label": "f. 227v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982008"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982008/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982008.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982008.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982008.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982008/full/150,/0/native.jpg"}}, {"label": "f. 228.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982010"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982010/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982010.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982010.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982010.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982010/full/150,/0/native.jpg"}}, {"label": "f. 228v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982012"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982012/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982012.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982012.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982012.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982012/full/150,/0/native.jpg"}}, {"label": "f. 229.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982014"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982014/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982014.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982014.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982014.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982014/full/150,/0/native.jpg"}}, {"label": "f. 229v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982016"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982016/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982016.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982016.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982016.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982016/full/150,/0/native.jpg"}}, {"label": "f. 230.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982018"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982018/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982018.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982018.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982018.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982018/full/150,/0/native.jpg"}}, {"label": "f. 230v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982020"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982020/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982020.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982020.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982020.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982020/full/150,/0/native.jpg"}}, {"label": "f. 231.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982022"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982022/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982022.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982022.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982022.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982022/full/150,/0/native.jpg"}}, {"label": "f. 231v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982024"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982024/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982024.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982024.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982024.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982024/full/150,/0/native.jpg"}}, {"label": "f. 232.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982026"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982026/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982026.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982026.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982026.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982026/full/150,/0/native.jpg"}}, {"label": "f. 232v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982028"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982028/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982028.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982028.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982028.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982028/full/150,/0/native.jpg"}}, {"label": "f. 233.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982030"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982030/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982030.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982030.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982030.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982030/full/150,/0/native.jpg"}}, {"label": "f. 233v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982032"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982032/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982032.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982032.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982032.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982032/full/150,/0/native.jpg"}}, {"label": "f. 234.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982034"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982034/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982034.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982034.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982034.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982034/full/150,/0/native.jpg"}}, {"label": "f. 234v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982036"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982036/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982036.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982036.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982036.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982036/full/150,/0/native.jpg"}}, {"label": "f. 235.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982038"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982038/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982038.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982038.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982038.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982038/full/150,/0/native.jpg"}}, {"label": "f. 235v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982040"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982040/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982040.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982040.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982040.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982040/full/150,/0/native.jpg"}}, {"label": "f. 236.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982042"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982042/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982042.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982042.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982042.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982042/full/150,/0/native.jpg"}}, {"label": "f. 236v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982044"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982044/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982044.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982044.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982044.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982044/full/150,/0/native.jpg"}}, {"label": "f. 237.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982046"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982046/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982046.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982046.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982046.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982046/full/150,/0/native.jpg"}}, {"label": "f. 237v.", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982048"}, "format": "image/jpeg", "height": 4927, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982048/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982048.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982048.json", "@type": "oa:Annotation"}], "height": 4927, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982048.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982048/full/150,/0/native.jpg"}}, {"label": "Inside back cover", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982050"}, "format": "image/jpeg", "height": 5097, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982050/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982050.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982050.json", "@type": "oa:Annotation"}], "height": 5097, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982050.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982050/full/150,/0/native.jpg"}}, {"label": "Back cover", "width": 4680, "@type": "sc:Canvas", "images": [{"resource": {"service": {"profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982052"}, "format": "image/jpeg", "height": 5316, "width": 4680, "@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982052/full/full/0/native.jpg", "@type": "dctypes:Image"}, "on": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json", "motivation": "sc:painting", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/annotation/anno-5982052.json", "@type": "oa:Annotation"}], "height": 5316, "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json", "thumbnail": {"@id": "https://images-dev.harvardx.harvard.edu/ids/iiif/5982052/full/150,/0/native.jpg"}}], "viewingDirection": "left-to-right", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/sequence/normal.json", "@type": "sc:Sequence", "viewingHint": "paged"}], "related": "http://hollisclassic.harvard.edu/F?func=find-c&CCL_TERM=sys=009878940", "label": "MS Richardson 7. Houghton Library, Harvard University. Heures de N\u00f4tre Dame (use of Troyes and Sens) : manuscript, [ca. 1470]", "logo": "https://images.harvardx.harvard.edu/iiif/harvard_logo.tif/full/full/0/default.jpg", "@context": "http://www.shared-canvas.org/ns/context.json", "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093", "@type": "sc:Manifest"} \ No newline at end of file diff --git a/spec/fixtures/annotationLegacyOa.json b/spec/fixtures/annotationLegacyOa.json deleted file mode 100644 index 5c860d634ca2bc0b1a2dfdcb7de2a485c7664704..0000000000000000000000000000000000000000 --- a/spec/fixtures/annotationLegacyOa.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@id": "http://iiif.ultrawaahoo.net/annotations/27", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://iiif.ultrawaahoo.net/annotations/27", - "@type": "cnt:ContentAsText", - "format": "text/plain", - "chars": "This is a legacy annotation." - }, - "on": "http://iiif.ultrawaahoo.net/canvases/3927#xywh=154,304,3507,164" -} \ No newline at end of file diff --git a/spec/fixtures/annotationMirador21.json b/spec/fixtures/annotationMirador21.json deleted file mode 100644 index 4dfaedb845577d5fdc516b71a2c0b98a2a0e85fb..0000000000000000000000000000000000000000 --- a/spec/fixtures/annotationMirador21.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>something</p>" - } - ], - "on": { - "@type": "oa:SpecificResource", - "full": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567/canvas/canvas-10466656.json", - "selector": { - "@type": "oa:SvgSelector", - "value": "<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"strokeWidth":1,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>" - }, - "within": { - "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567", - "@type": "sc:Manifest" - } - }, - "@id": "d2eda2e2-951a-4f88-b4ec-03a7b25a5d07" -} diff --git a/spec/fixtures/annotationMiradorDual.json b/spec/fixtures/annotationMiradorDual.json deleted file mode 100644 index 6d2997713341fe4d90ccf295ddd49a692f6b61a6..0000000000000000000000000000000000000000 --- a/spec/fixtures/annotationMiradorDual.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "oa:Annotation", - "motivation": [ - "oa:commenting" - ], - "resource": [ - { - "@type": "dctypes:Text", - "format": "text/html", - "chars": "<p>something</p>" - } - ], - "on": [{ - "@type": "oa:SpecificResource", - "full": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567/canvas/canvas-10466656.json", - "selector": { - "@type": "oa:Choice", - "default": { - "@type": "oa:FragmentSelector", - "value": "xywh=1000,219,198,148" - }, - "item": { - "@type": "oa:SvgSelector", - "value": "<svg xmlns='http://www.w3.org/2000/svg'><path xmlns=\"http://www.w3.org/2000/svg\" d=\"M1000.24213,219.15375l98.78935,0l0,0l98.78935,0l0,74.09201l0,74.09201l-98.78935,0l-98.78935,0l0,-74.09201z\" data-paper-data=\"{"strokeWidth":1,"rotation":0,"annotation":null,"editable":true}\" id=\"rectangle_7e2b56fa-b18b-4d09-a575-0bb19f560b56\" fill-opacity=\"0\" fill=\"#00bfff\" fill-rule=\"nonzero\" stroke=\"#00bfff\" stroke-width=\"30.87167\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" stroke-dasharray=\"\" stroke-dashoffset=\"0\" font-family=\"sans-serif\" font-weight=\"normal\" font-size=\"12\" text-anchor=\"start\" style=\"mix-blend-mode: normal\"/></svg>" - } - }, - "within": { - "@id": "https://oculus-dev.harvardx.harvard.edu/manifests/huam:320567", - "@type": "sc:Manifest" - } - }], - "@id": "d2eda2e2-951a-4f88-b4ec-03a7b25a5d07" -} diff --git a/spec/fixtures/annotationMiradorLegacy.json b/spec/fixtures/annotationMiradorLegacy.json deleted file mode 100644 index 994c35e171cae5dc013701788038091ada7d4fd2..0000000000000000000000000000000000000000 --- a/spec/fixtures/annotationMiradorLegacy.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "@context" : "http://iiif.io/api/presentation/2/context.json", - "@type" : "oa:Annotation", - "motivation" : [ "oa:commenting" ], - "resource" : [ { - "@type" : "dctypes:Text", - "format" : "text/html", - "chars" : "<p>1852-1921</p>" - } ], - "on" : { - "@type" : "oa:SpecificResource", - "full" : "http://dams.llgc.org.uk/iiif/2.0/4574752/canvas/4574755.json", - "selector" : { - "@type" : "oa:FragmentSelector", - "value" : "xywh=2218,3217,371,78" - } - } -} \ No newline at end of file diff --git a/spec/fixtures/dummyManifest.json b/spec/fixtures/dummyManifest.json deleted file mode 100644 index 8b7421cf3db79621778e407e77331c4714fa44b4..0000000000000000000000000000000000000000 --- a/spec/fixtures/dummyManifest.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@context":"http://iiif.io/api/presentation/2/context.json", - "@id":"http://www.example.org/iiif/book1/manifest", - "@type":"sc:Manifest", - "label":"Dummy Manifest", - "description": "A dummy manifest with a single, empty canvas.", - "sequences":[ - { - "@id":"http://www.example.org/iiif/book1/sequence/normal", - "@type":"sc:Sequence", - "label":"Default Sequence", - "canvases":[ - { - "@id":"http://www.example.org/iiif/book1/canvas/p1", - "@type":"sc:Canvas", - "label":"Default Canvas", - "width":1234, - "height":4321, - "images": [ - { - "@id": "http://www.example.org/iiif/image/1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "on": "http://www.example.org/iiif/book1/canvas/p1", - "resource": { - "@id": "http://www.example.org/iiif/resource/1", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1234, - "width": 4321, - "service": { - "@id": "http://www.example.org/iiif/image/1", - "profile": "http://iiif.io/api/image/2/profiles/level2.json" - } - } - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/spec/fixtures/iiif-universe.json b/spec/fixtures/iiif-universe.json deleted file mode 100644 index 3f8387e6490b75ab18623ebdfe02fba9eff0e3e3..0000000000000000000000000000000000000000 --- a/spec/fixtures/iiif-universe.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://ryanfb.github.io/iiif-universe/iiif-universe.json", - "@type": "sc:Collection", - "label": "IIIF Universe", - "collections": [ - { - "@id": "http://manifests.ydc2.yale.edu/manifest", - "@type": "sc:Collection", - "label": "Yale" - }, - { - "@id": "http://manifests.britishart.yale.edu/collection/top", - "@type": "sc:Collection", - "label": "Yale Center for British Art" - }, - { - "@id": "https://graph.global/static/data/universes/iiif/stanford.json", - "@type": "sc:Collection", - "label": "Stanford" - }, - { - "@id": "https://graph.global/static/data/universes/iiif/e-codices.json", - "@type": "sc:Collection", - "label": "e-codices" - }, - { - "@id": "http://showcase.iiif.io/shims/chroniclingamerica/prezi/top.json", - "@type": "sc:Collection", - "label": "Chronicling America Newspapers by State" - }, - { - "@id": "http://scta.info/iiif/collection/scta", - "@type": "sc:Collection", - "label": "Sentences Commentary Text Archive" - }, - { - "@id": "http://digital.library.villanova.edu/Collection/vudl:3/IIIF", - "@type": "sc:Collection", - "label": "Digital Library @ Villanova University" - }, - { - "@id": "http://wellcomelibrary.org/service/collections/", - "@type": "sc:Collection", - "label": "Wellcome Library" - }, - { - "@id": "https://iiif.archivelab.org/iiif/collection.json", - "@type": "sc:Collection", - "label": "The Internet Archive Universal Collection" - }, - { - "@id": "http://iiif.bodleian.ox.ac.uk/iiif/collection/All", - "@type": "sc:Collection", - "label": "Bodleian Library, Oxford" - }, - { - "@id": "http://biblissima.fr/iiif/collection/top", - "@type": "sc:Collection", - "label": "Biblissima IIIF Collections", - "description": "Collections of IIIF Manifests from Biblissima's image repositories" - }, - { - "@id": "https://labs2.artstor.org/iiif/ssc/manifest.json", - "@type": "sc:Collection", - "label": "Shared Shelf Commons", - "description": "IIIF Manifests showcasing collections from Shared Shelf Commons" - } - ] -} \ No newline at end of file diff --git a/spec/fixtures/metadataFixture.json b/spec/fixtures/metadataFixture.json deleted file mode 100644 index 5606e0dbbf6a59c8a69b44db753466294ae0e1e1..0000000000000000000000000000000000000000 --- a/spec/fixtures/metadataFixture.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "@context":"http://iiif.io/api/presentation/2/context.json", - "@type":"sc:Manifest", - "@id":"http://www.example.org/iiif/book1/manifest", - - "metadata": [ - {"label":"Single", "value":"default"}, - {"label":"Multiple with default", "value": [ - {"@value": "English", "@language":"en"}, - {"@value": "French", "@language":"fr"}, - {"@value": "default"} - ] - }, - {"label":"Multiple without default", "value": [ - {"@value": "English", "@language":"en"}, - {"@value": "French", "@language":"fr"} - ] - }, - { - "label":"Single HTML with invalid elements", - "value":"<span style='height:500px'>test <script language='Javascript'>alert('bad!');</script><blink>bad</blink></span>" - }, - { - "label":"Single HTML with valid elements", - "value":"<span><b>bold</b><i>italic</i><br><a href=\"http://iiif.io/\" target=\"_blank\"><img src=\"http://iiif.io/img/logo-iiif-34x30.png\"></a></span>" - }, - { - "label": "Single text with single URL", - "value": "There's an URL: http://example.com" - }, - { - "label": "Single text with multiple URLs", - "value": "There's an URL: http://example.com and here's another: http://foobar.org" - }, - { - "label": "Single text with single URL already wrapped in an anchor tag, but without target blank", - "value": "There's an URL: <a href='http://example.com'>foobar</a>" - } - ] -} diff --git a/spec/fixtures/searchManifest.json b/spec/fixtures/searchManifest.json deleted file mode 100644 index 76203027157643d7dc4e82d60bb837b60312a570..0000000000000000000000000000000000000000 --- a/spec/fixtures/searchManifest.json +++ /dev/null @@ -1,23752 +0,0 @@ -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://wellcomelibrary.org/iiif/b18035978/manifest", - "@type": "sc:Manifest", - "label": "The biocrats", - "metadata": [ - { - "label": "Title", - "value": "The biocrats" - }, - { - "label": "Author(s)", - "value": "Leach, Gerald" - }, - { - "label": "Publication date", - "value": "1970." - }, - { - "label": "Attribution", - "value": "Wellcome Library<br/>License: CC-BY-NC" - }, - { - "label": "", - "value": "<a href='http://search.wellcomelibrary.org/iii/encore/record/C__Rb1803597'>View full catalogue record</a>" - }, - { - "label": "Full conditions of use", - "value": "You have permission to make copies of this work under a <a target=\"_top\" href=\"http://creativecommons.org/licenses/by-nc/4.0/\">Creative Commons, Attribution, Non-commercial license</a>.<br/><br/>Non-commercial use includes private study, academic research, teaching, and other activities that are not primarily intended for, or directed towards, commercial advantage or private monetary compensation. See the <a target=\"_top\" href=\"http://creativecommons.org/licenses/by-nc/4.0/legalcode\">Legal Code</a> for further information.<br/><br/>Image source should be attributed as specified in the full catalogue record. If no source is given the image should be attributed to Wellcome Library." - } - ], - "license": "https://creativecommons.org/licenses/by-nc/4.0/", - "logo": "http://wellcomelibrary.org/assets/img/squarelogo64.png", - "related": { - "@id": "http://wellcomelibrary.org/item/b18035978", - "format": "text/html" - }, - "seeAlso": [ - { - "@id": "http://wellcomelibrary.org/data/b18035978.json", - "format": "application/json", - "profile": "http://wellcomelibrary.org/profiles/res" - }, - { - "@id": "http://wellcomelibrary.org/resource/schemaorg/b18035978", - "format": "application/ld+json", - "profile": "http://iiif.io/community/profiles/discovery/schema" - }, - { - "@id": "http://wellcomelibrary.org/resource/dublincore/b18035978", - "format": "application/ld+json", - "profile": "http://iiif.io/community/profiles/discovery/dc" - } - ], - "service": [ - { - "@context": "http://wellcomelibrary.org/ld/iiif-ext/0/context.json", - "@id": "http://wellcomelibrary.org/iiif/b18035978-0/access-control-hints-service", - "profile": "http://wellcomelibrary.org/ld/iiif-ext/access-control-hints", - "accessHint": "open" - }, - { - "@context": "http://iiif.io/api/search/0/context.json", - "@id": "/search", - "profile": "http://iiif.io/api/search/0/search", - "label": "Search within this manifest", - "service": { - "@id": "http://wellcomelibrary.org/annoservices/autocomplete/b18035978", - "profile": "http://iiif.io/api/search/0/autocomplete", - "label": "Get suggested words in this manifest" - } - }, - { - "@context": "http://universalviewer.io/context.json", - "@id": "http://wellcomelibrary.org/service/trackingLabels/b18035978", - "profile": "http://universalviewer.io/tracking-extensions-profile", - "trackingLabel": "Format: monograph, Institution: n/a, Identifier: b18035978, Digicode: diggenetics, Collection code: n/a" - } - ], - "sequences": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/sequence/s0", - "@type": "sc:Sequence", - "label": "Sequence s0", - "rendering": [ - { - "@id": "https://dlcs.io/pdf/wellcome/pdf-item/b18035978/0", - "format": "application/pdf", - "label": "Download as PDF" - }, - { - "@id": "http://wellcomelibrary.org/service/fulltext/b18035978/0?raw=true", - "format": "text/plain", - "label": "Download raw text" - } - ], - "viewingHint": "paged", - "canvases": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c0", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b3ec346f-71bf-4bb1-a7f1-1cad996fa0d4/full/69,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b3ec346f-71bf-4bb1-a7f1-1cad996fa0d4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 703, - "sizes": [ - { - "width": 69, - "height": 100 - }, - { - "width": 137, - "height": 200 - }, - { - "width": 275, - "height": 400 - }, - { - "width": 703, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=0", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 4944, - "width": 3395, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b3ec346f-71bf-4bb1-a7f1-1cad996fa0d4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b3ec346f-71bf-4bb1-a7f1-1cad996fa0d4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 703, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b3ec346f-71bf-4bb1-a7f1-1cad996fa0d4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c0" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/0", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c2", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3bc68bcb-8ac9-4cd1-9dd5-296aea55fe94/full/62,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3bc68bcb-8ac9-4cd1-9dd5-296aea55fe94", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 640, - "sizes": [ - { - "width": 62, - "height": 100 - }, - { - "width": 125, - "height": 200 - }, - { - "width": 250, - "height": 400 - }, - { - "width": 640, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=2", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3234, - "width": 2020, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3bc68bcb-8ac9-4cd1-9dd5-296aea55fe94", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3bc68bcb-8ac9-4cd1-9dd5-296aea55fe94/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 640, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3bc68bcb-8ac9-4cd1-9dd5-296aea55fe94", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c2" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/2", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c3", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bd3345ff-17e6-4a8b-8248-fa0691eb2c4b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bd3345ff-17e6-4a8b-8248-fa0691eb2c4b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=3", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bd3345ff-17e6-4a8b-8248-fa0691eb2c4b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd3345ff-17e6-4a8b-8248-fa0691eb2c4b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd3345ff-17e6-4a8b-8248-fa0691eb2c4b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c3" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/3", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c4", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/50dc430c-9b6f-46e4-8282-4487a00c84b9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/50dc430c-9b6f-46e4-8282-4487a00c84b9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=4", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/50dc430c-9b6f-46e4-8282-4487a00c84b9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/50dc430c-9b6f-46e4-8282-4487a00c84b9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/50dc430c-9b6f-46e4-8282-4487a00c84b9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c4" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/4", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c5", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/595d9268-a9fa-4076-bda8-3e779fbfcbca/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/595d9268-a9fa-4076-bda8-3e779fbfcbca", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=5", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/595d9268-a9fa-4076-bda8-3e779fbfcbca", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/595d9268-a9fa-4076-bda8-3e779fbfcbca/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/595d9268-a9fa-4076-bda8-3e779fbfcbca", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c5" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/5", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c6", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e0de70c7-48bc-4842-8d33-640caee8b8c0/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e0de70c7-48bc-4842-8d33-640caee8b8c0", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=6", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e0de70c7-48bc-4842-8d33-640caee8b8c0", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e0de70c7-48bc-4842-8d33-640caee8b8c0/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e0de70c7-48bc-4842-8d33-640caee8b8c0", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c6" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/6", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c7", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/243b51c8-9ad6-4e2a-a0be-fc8b53301dbe/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/243b51c8-9ad6-4e2a-a0be-fc8b53301dbe", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=7", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/243b51c8-9ad6-4e2a-a0be-fc8b53301dbe", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/243b51c8-9ad6-4e2a-a0be-fc8b53301dbe/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/243b51c8-9ad6-4e2a-a0be-fc8b53301dbe", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c7" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/7", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c8", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/51807440-aeed-4302-a5d8-73808e11f9f1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/51807440-aeed-4302-a5d8-73808e11f9f1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=8", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/51807440-aeed-4302-a5d8-73808e11f9f1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/51807440-aeed-4302-a5d8-73808e11f9f1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/51807440-aeed-4302-a5d8-73808e11f9f1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c8" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/8", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c9", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f4d50c65-32a5-4303-ba5c-56694297328e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f4d50c65-32a5-4303-ba5c-56694297328e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=9", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f4d50c65-32a5-4303-ba5c-56694297328e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f4d50c65-32a5-4303-ba5c-56694297328e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f4d50c65-32a5-4303-ba5c-56694297328e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c9" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/9", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c10", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c03e17b0-c9d1-4e8a-8f87-4737f6a25347/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c03e17b0-c9d1-4e8a-8f87-4737f6a25347", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=10", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c03e17b0-c9d1-4e8a-8f87-4737f6a25347", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c03e17b0-c9d1-4e8a-8f87-4737f6a25347/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c03e17b0-c9d1-4e8a-8f87-4737f6a25347", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c10" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/10", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c11", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b4bb2a96-5d21-4957-a5e6-5beeadb8a3ba/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b4bb2a96-5d21-4957-a5e6-5beeadb8a3ba", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=11", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b4bb2a96-5d21-4957-a5e6-5beeadb8a3ba", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b4bb2a96-5d21-4957-a5e6-5beeadb8a3ba/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b4bb2a96-5d21-4957-a5e6-5beeadb8a3ba", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c11" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/11", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c12", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1804c604-244a-4f75-b130-a019b01ef197/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1804c604-244a-4f75-b130-a019b01ef197", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=12", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1804c604-244a-4f75-b130-a019b01ef197", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1804c604-244a-4f75-b130-a019b01ef197/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1804c604-244a-4f75-b130-a019b01ef197", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c12" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/12", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c13", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4e542ae9-b999-4a1a-ab10-5cf1a1beca8b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4e542ae9-b999-4a1a-ab10-5cf1a1beca8b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=13", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4e542ae9-b999-4a1a-ab10-5cf1a1beca8b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4e542ae9-b999-4a1a-ab10-5cf1a1beca8b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4e542ae9-b999-4a1a-ab10-5cf1a1beca8b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c13" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/13", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c14", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/63107400-08e4-4b93-b5ba-3d19bbd0e94f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/63107400-08e4-4b93-b5ba-3d19bbd0e94f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=14", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/63107400-08e4-4b93-b5ba-3d19bbd0e94f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/63107400-08e4-4b93-b5ba-3d19bbd0e94f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/63107400-08e4-4b93-b5ba-3d19bbd0e94f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c14" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/14", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c15", - "@type": "sc:Canvas", - "label": "11", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b838eff1-ed6d-479d-ba32-57af20e45193/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b838eff1-ed6d-479d-ba32-57af20e45193", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=15", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b838eff1-ed6d-479d-ba32-57af20e45193", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b838eff1-ed6d-479d-ba32-57af20e45193/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b838eff1-ed6d-479d-ba32-57af20e45193", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c15" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/15", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c16", - "@type": "sc:Canvas", - "label": "12", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d750c5a7-bf75-4222-a5df-f842e2e83b61/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d750c5a7-bf75-4222-a5df-f842e2e83b61", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=16", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d750c5a7-bf75-4222-a5df-f842e2e83b61", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d750c5a7-bf75-4222-a5df-f842e2e83b61/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d750c5a7-bf75-4222-a5df-f842e2e83b61", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c16" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/16", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c17", - "@type": "sc:Canvas", - "label": "13", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ae6ccfa0-251a-4b03-b037-e8666f1616f2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ae6ccfa0-251a-4b03-b037-e8666f1616f2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=17", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ae6ccfa0-251a-4b03-b037-e8666f1616f2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ae6ccfa0-251a-4b03-b037-e8666f1616f2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ae6ccfa0-251a-4b03-b037-e8666f1616f2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c17" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/17", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c18", - "@type": "sc:Canvas", - "label": "14", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b13392ba-4f35-4bb5-895f-384e1a8ce5ff/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b13392ba-4f35-4bb5-895f-384e1a8ce5ff", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=18", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b13392ba-4f35-4bb5-895f-384e1a8ce5ff", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b13392ba-4f35-4bb5-895f-384e1a8ce5ff/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b13392ba-4f35-4bb5-895f-384e1a8ce5ff", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c18" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/18", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c19", - "@type": "sc:Canvas", - "label": "15", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/938d9dc2-6449-4a9d-9568-5e2d3bbe3b8f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/938d9dc2-6449-4a9d-9568-5e2d3bbe3b8f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=19", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/938d9dc2-6449-4a9d-9568-5e2d3bbe3b8f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/938d9dc2-6449-4a9d-9568-5e2d3bbe3b8f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/938d9dc2-6449-4a9d-9568-5e2d3bbe3b8f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c19" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/19", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c20", - "@type": "sc:Canvas", - "label": "16", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/52db8c15-608c-48ad-acf1-0ac152fa37e8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/52db8c15-608c-48ad-acf1-0ac152fa37e8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=20", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/52db8c15-608c-48ad-acf1-0ac152fa37e8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/52db8c15-608c-48ad-acf1-0ac152fa37e8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/52db8c15-608c-48ad-acf1-0ac152fa37e8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c20" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/20", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c21", - "@type": "sc:Canvas", - "label": "17", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8acf27c7-3aa1-4dfd-a82a-c10df71f8c77/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8acf27c7-3aa1-4dfd-a82a-c10df71f8c77", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=21", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8acf27c7-3aa1-4dfd-a82a-c10df71f8c77", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8acf27c7-3aa1-4dfd-a82a-c10df71f8c77/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8acf27c7-3aa1-4dfd-a82a-c10df71f8c77", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c21" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/21", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c22", - "@type": "sc:Canvas", - "label": "18", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5707dc47-5c48-4243-8b15-8e0434e2bb29/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5707dc47-5c48-4243-8b15-8e0434e2bb29", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=22", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5707dc47-5c48-4243-8b15-8e0434e2bb29", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5707dc47-5c48-4243-8b15-8e0434e2bb29/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5707dc47-5c48-4243-8b15-8e0434e2bb29", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c22" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/22", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c23", - "@type": "sc:Canvas", - "label": "19", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d1cbceca-a081-416d-81ce-9421fc615cd2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d1cbceca-a081-416d-81ce-9421fc615cd2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=23", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d1cbceca-a081-416d-81ce-9421fc615cd2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d1cbceca-a081-416d-81ce-9421fc615cd2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d1cbceca-a081-416d-81ce-9421fc615cd2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c23" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/23", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c24", - "@type": "sc:Canvas", - "label": "20", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/99de385c-5636-446a-8575-3e08c2fba899/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/99de385c-5636-446a-8575-3e08c2fba899", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=24", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/99de385c-5636-446a-8575-3e08c2fba899", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/99de385c-5636-446a-8575-3e08c2fba899/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/99de385c-5636-446a-8575-3e08c2fba899", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c24" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/24", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c25", - "@type": "sc:Canvas", - "label": "21", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b31bcb4a-db2f-4711-8389-ddc7238eaeb7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b31bcb4a-db2f-4711-8389-ddc7238eaeb7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=25", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b31bcb4a-db2f-4711-8389-ddc7238eaeb7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b31bcb4a-db2f-4711-8389-ddc7238eaeb7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b31bcb4a-db2f-4711-8389-ddc7238eaeb7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c25" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/25", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c26", - "@type": "sc:Canvas", - "label": "22", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ecca06c7-48da-421b-b5b9-3fa85407fbb1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ecca06c7-48da-421b-b5b9-3fa85407fbb1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=26", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ecca06c7-48da-421b-b5b9-3fa85407fbb1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ecca06c7-48da-421b-b5b9-3fa85407fbb1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ecca06c7-48da-421b-b5b9-3fa85407fbb1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c26" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/26", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c27", - "@type": "sc:Canvas", - "label": "23", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/231461af-c8d9-4ac0-87e1-2be063575ba6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/231461af-c8d9-4ac0-87e1-2be063575ba6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=27", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/231461af-c8d9-4ac0-87e1-2be063575ba6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/231461af-c8d9-4ac0-87e1-2be063575ba6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/231461af-c8d9-4ac0-87e1-2be063575ba6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c27" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/27", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c28", - "@type": "sc:Canvas", - "label": "24", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/38a31a7c-eeef-433a-b0e1-c74e1581bfe4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/38a31a7c-eeef-433a-b0e1-c74e1581bfe4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=28", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/38a31a7c-eeef-433a-b0e1-c74e1581bfe4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/38a31a7c-eeef-433a-b0e1-c74e1581bfe4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/38a31a7c-eeef-433a-b0e1-c74e1581bfe4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c28" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/28", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c29", - "@type": "sc:Canvas", - "label": "25", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/baff77a6-7509-42e2-a7d4-e6e873c08f18/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/baff77a6-7509-42e2-a7d4-e6e873c08f18", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=29", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/baff77a6-7509-42e2-a7d4-e6e873c08f18", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/baff77a6-7509-42e2-a7d4-e6e873c08f18/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/baff77a6-7509-42e2-a7d4-e6e873c08f18", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c29" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/29", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c30", - "@type": "sc:Canvas", - "label": "26", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/82222821-f0f9-4330-9316-a58a55e9aeb9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/82222821-f0f9-4330-9316-a58a55e9aeb9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=30", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/82222821-f0f9-4330-9316-a58a55e9aeb9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/82222821-f0f9-4330-9316-a58a55e9aeb9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/82222821-f0f9-4330-9316-a58a55e9aeb9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c30" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/30", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c31", - "@type": "sc:Canvas", - "label": "27", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c41fa0c6-a135-4380-8738-582710f750cc/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c41fa0c6-a135-4380-8738-582710f750cc", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=31", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c41fa0c6-a135-4380-8738-582710f750cc", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c41fa0c6-a135-4380-8738-582710f750cc/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c41fa0c6-a135-4380-8738-582710f750cc", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c31" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/31", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c32", - "@type": "sc:Canvas", - "label": "28", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2a1a9a91-f0b9-4114-bdd3-dfb8984bf451/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2a1a9a91-f0b9-4114-bdd3-dfb8984bf451", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=32", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2a1a9a91-f0b9-4114-bdd3-dfb8984bf451", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2a1a9a91-f0b9-4114-bdd3-dfb8984bf451/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2a1a9a91-f0b9-4114-bdd3-dfb8984bf451", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c32" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/32", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c33", - "@type": "sc:Canvas", - "label": "29", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/39e52873-6772-4ae0-a534-14f6a3e57137/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/39e52873-6772-4ae0-a534-14f6a3e57137", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=33", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/39e52873-6772-4ae0-a534-14f6a3e57137", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/39e52873-6772-4ae0-a534-14f6a3e57137/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/39e52873-6772-4ae0-a534-14f6a3e57137", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c33" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/33", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c34", - "@type": "sc:Canvas", - "label": "30", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/de27e8f5-a732-408c-af49-e139c35cde0e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/de27e8f5-a732-408c-af49-e139c35cde0e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=34", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/de27e8f5-a732-408c-af49-e139c35cde0e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/de27e8f5-a732-408c-af49-e139c35cde0e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/de27e8f5-a732-408c-af49-e139c35cde0e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c34" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/34", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c35", - "@type": "sc:Canvas", - "label": "31", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b6d7b5cb-5729-4e99-9a80-15dbe7c420bb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b6d7b5cb-5729-4e99-9a80-15dbe7c420bb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=35", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b6d7b5cb-5729-4e99-9a80-15dbe7c420bb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b6d7b5cb-5729-4e99-9a80-15dbe7c420bb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b6d7b5cb-5729-4e99-9a80-15dbe7c420bb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c35" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/35", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c36", - "@type": "sc:Canvas", - "label": "32", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9e33567e-fdc5-4567-9518-e725c1578487/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9e33567e-fdc5-4567-9518-e725c1578487", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=36", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9e33567e-fdc5-4567-9518-e725c1578487", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e33567e-fdc5-4567-9518-e725c1578487/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e33567e-fdc5-4567-9518-e725c1578487", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c36" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/36", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c37", - "@type": "sc:Canvas", - "label": "33", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7aeed6fc-f425-4e36-ae2e-4a7187c91cf7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7aeed6fc-f425-4e36-ae2e-4a7187c91cf7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=37", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7aeed6fc-f425-4e36-ae2e-4a7187c91cf7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7aeed6fc-f425-4e36-ae2e-4a7187c91cf7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7aeed6fc-f425-4e36-ae2e-4a7187c91cf7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c37" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/37", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c38", - "@type": "sc:Canvas", - "label": "34", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f164f4b7-5355-4438-89b5-32b41f6327d6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f164f4b7-5355-4438-89b5-32b41f6327d6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=38", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f164f4b7-5355-4438-89b5-32b41f6327d6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f164f4b7-5355-4438-89b5-32b41f6327d6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f164f4b7-5355-4438-89b5-32b41f6327d6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c38" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/38", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c39", - "@type": "sc:Canvas", - "label": "35", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f6563277-302e-4582-b67d-554a1853244f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f6563277-302e-4582-b67d-554a1853244f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=39", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f6563277-302e-4582-b67d-554a1853244f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f6563277-302e-4582-b67d-554a1853244f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f6563277-302e-4582-b67d-554a1853244f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c39" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/39", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c40", - "@type": "sc:Canvas", - "label": "36", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/416fcd41-8619-4cca-9768-bb3771d5edc8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/416fcd41-8619-4cca-9768-bb3771d5edc8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=40", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/416fcd41-8619-4cca-9768-bb3771d5edc8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/416fcd41-8619-4cca-9768-bb3771d5edc8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/416fcd41-8619-4cca-9768-bb3771d5edc8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c40" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/40", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c41", - "@type": "sc:Canvas", - "label": "37", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/153321ce-7cbc-4197-8fe1-ce5da8029dd3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/153321ce-7cbc-4197-8fe1-ce5da8029dd3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=41", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/153321ce-7cbc-4197-8fe1-ce5da8029dd3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/153321ce-7cbc-4197-8fe1-ce5da8029dd3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/153321ce-7cbc-4197-8fe1-ce5da8029dd3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c41" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/41", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c42", - "@type": "sc:Canvas", - "label": "38", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/479cbc6f-6cd0-4484-a1d5-d385ac8ab407/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/479cbc6f-6cd0-4484-a1d5-d385ac8ab407", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=42", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/479cbc6f-6cd0-4484-a1d5-d385ac8ab407", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/479cbc6f-6cd0-4484-a1d5-d385ac8ab407/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/479cbc6f-6cd0-4484-a1d5-d385ac8ab407", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c42" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/42", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c43", - "@type": "sc:Canvas", - "label": "39", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/60d9b1af-cc74-43b0-a09a-c9b5ff49663e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/60d9b1af-cc74-43b0-a09a-c9b5ff49663e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=43", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/60d9b1af-cc74-43b0-a09a-c9b5ff49663e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/60d9b1af-cc74-43b0-a09a-c9b5ff49663e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/60d9b1af-cc74-43b0-a09a-c9b5ff49663e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c43" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/43", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c44", - "@type": "sc:Canvas", - "label": "40", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d9157eed-ce77-47ba-bfc9-f02e8d307592/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d9157eed-ce77-47ba-bfc9-f02e8d307592", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=44", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d9157eed-ce77-47ba-bfc9-f02e8d307592", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d9157eed-ce77-47ba-bfc9-f02e8d307592/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d9157eed-ce77-47ba-bfc9-f02e8d307592", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c44" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/44", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c45", - "@type": "sc:Canvas", - "label": "41", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/addd77b9-adc4-4c5e-9f18-75b147a88742/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/addd77b9-adc4-4c5e-9f18-75b147a88742", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=45", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/addd77b9-adc4-4c5e-9f18-75b147a88742", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/addd77b9-adc4-4c5e-9f18-75b147a88742/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/addd77b9-adc4-4c5e-9f18-75b147a88742", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c45" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/45", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c46", - "@type": "sc:Canvas", - "label": "42", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6b34c705-e52d-4060-83e7-bb2f4214b392/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6b34c705-e52d-4060-83e7-bb2f4214b392", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=46", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6b34c705-e52d-4060-83e7-bb2f4214b392", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6b34c705-e52d-4060-83e7-bb2f4214b392/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6b34c705-e52d-4060-83e7-bb2f4214b392", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c46" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/46", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c47", - "@type": "sc:Canvas", - "label": "43", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5b00597d-3d16-46e2-89a1-1a5e775d7d84/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5b00597d-3d16-46e2-89a1-1a5e775d7d84", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=47", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5b00597d-3d16-46e2-89a1-1a5e775d7d84", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5b00597d-3d16-46e2-89a1-1a5e775d7d84/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5b00597d-3d16-46e2-89a1-1a5e775d7d84", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c47" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/47", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c48", - "@type": "sc:Canvas", - "label": "44", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/01b598bf-4027-4fad-bcbe-0146da177990/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/01b598bf-4027-4fad-bcbe-0146da177990", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=48", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/01b598bf-4027-4fad-bcbe-0146da177990", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/01b598bf-4027-4fad-bcbe-0146da177990/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/01b598bf-4027-4fad-bcbe-0146da177990", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c48" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/48", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c49", - "@type": "sc:Canvas", - "label": "45", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3395b7d9-50ab-43be-aaf2-f29559e00732/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3395b7d9-50ab-43be-aaf2-f29559e00732", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=49", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3395b7d9-50ab-43be-aaf2-f29559e00732", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3395b7d9-50ab-43be-aaf2-f29559e00732/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3395b7d9-50ab-43be-aaf2-f29559e00732", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c49" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/49", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c50", - "@type": "sc:Canvas", - "label": "46", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ebc88756-e80f-487f-868b-1a589c1c30a4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ebc88756-e80f-487f-868b-1a589c1c30a4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=50", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ebc88756-e80f-487f-868b-1a589c1c30a4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ebc88756-e80f-487f-868b-1a589c1c30a4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ebc88756-e80f-487f-868b-1a589c1c30a4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c50" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/50", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c51", - "@type": "sc:Canvas", - "label": "47", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/073ba330-6c30-4635-ac3b-ca159a61be87/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/073ba330-6c30-4635-ac3b-ca159a61be87", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=51", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/073ba330-6c30-4635-ac3b-ca159a61be87", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/073ba330-6c30-4635-ac3b-ca159a61be87/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/073ba330-6c30-4635-ac3b-ca159a61be87", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c51" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/51", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c52", - "@type": "sc:Canvas", - "label": "48", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/55eeb71f-0aa0-4438-b4bb-3cbde4d37d98/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/55eeb71f-0aa0-4438-b4bb-3cbde4d37d98", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=52", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/55eeb71f-0aa0-4438-b4bb-3cbde4d37d98", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/55eeb71f-0aa0-4438-b4bb-3cbde4d37d98/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/55eeb71f-0aa0-4438-b4bb-3cbde4d37d98", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c52" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/52", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c53", - "@type": "sc:Canvas", - "label": "49", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bb6c7914-c2e8-4afe-a191-057c6a990302/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bb6c7914-c2e8-4afe-a191-057c6a990302", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=53", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bb6c7914-c2e8-4afe-a191-057c6a990302", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bb6c7914-c2e8-4afe-a191-057c6a990302/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bb6c7914-c2e8-4afe-a191-057c6a990302", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c53" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/53", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c54", - "@type": "sc:Canvas", - "label": "50", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/981cc047-34c4-4c7d-9432-8654c65017c4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/981cc047-34c4-4c7d-9432-8654c65017c4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=54", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/981cc047-34c4-4c7d-9432-8654c65017c4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/981cc047-34c4-4c7d-9432-8654c65017c4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/981cc047-34c4-4c7d-9432-8654c65017c4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c54" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/54", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c55", - "@type": "sc:Canvas", - "label": "51", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c6931321-2587-43df-aa43-4782d6c9835a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c6931321-2587-43df-aa43-4782d6c9835a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=55", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c6931321-2587-43df-aa43-4782d6c9835a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c6931321-2587-43df-aa43-4782d6c9835a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c6931321-2587-43df-aa43-4782d6c9835a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c55" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/55", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c56", - "@type": "sc:Canvas", - "label": "52", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d862febe-c140-4796-9619-e284e266e290/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d862febe-c140-4796-9619-e284e266e290", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=56", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d862febe-c140-4796-9619-e284e266e290", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d862febe-c140-4796-9619-e284e266e290/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d862febe-c140-4796-9619-e284e266e290", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c56" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/56", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c57", - "@type": "sc:Canvas", - "label": "53", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/78236647-7a54-446f-b36c-4bb108048314/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/78236647-7a54-446f-b36c-4bb108048314", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=57", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/78236647-7a54-446f-b36c-4bb108048314", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/78236647-7a54-446f-b36c-4bb108048314/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/78236647-7a54-446f-b36c-4bb108048314", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c57" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/57", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c58", - "@type": "sc:Canvas", - "label": "54", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/25b66328-6ce6-41b0-a1a5-4786f1776356/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/25b66328-6ce6-41b0-a1a5-4786f1776356", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=58", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/25b66328-6ce6-41b0-a1a5-4786f1776356", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/25b66328-6ce6-41b0-a1a5-4786f1776356/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/25b66328-6ce6-41b0-a1a5-4786f1776356", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c58" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/58", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c59", - "@type": "sc:Canvas", - "label": "55", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6cc80f11-7f34-493c-8fa3-25a1c5d530de/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6cc80f11-7f34-493c-8fa3-25a1c5d530de", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=59", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6cc80f11-7f34-493c-8fa3-25a1c5d530de", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6cc80f11-7f34-493c-8fa3-25a1c5d530de/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6cc80f11-7f34-493c-8fa3-25a1c5d530de", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c59" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/59", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c60", - "@type": "sc:Canvas", - "label": "56", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/423dbcd1-dea2-4248-ba1b-a7979d39b144/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/423dbcd1-dea2-4248-ba1b-a7979d39b144", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=60", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/423dbcd1-dea2-4248-ba1b-a7979d39b144", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/423dbcd1-dea2-4248-ba1b-a7979d39b144/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/423dbcd1-dea2-4248-ba1b-a7979d39b144", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c60" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/60", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c61", - "@type": "sc:Canvas", - "label": "57", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/860acaee-09f7-4ef8-b1fb-7f7e402700b3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/860acaee-09f7-4ef8-b1fb-7f7e402700b3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=61", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/860acaee-09f7-4ef8-b1fb-7f7e402700b3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/860acaee-09f7-4ef8-b1fb-7f7e402700b3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/860acaee-09f7-4ef8-b1fb-7f7e402700b3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c61" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/61", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c62", - "@type": "sc:Canvas", - "label": "58", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/738a1dc4-80bd-4ede-bde7-b641821d37e2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/738a1dc4-80bd-4ede-bde7-b641821d37e2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=62", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/738a1dc4-80bd-4ede-bde7-b641821d37e2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/738a1dc4-80bd-4ede-bde7-b641821d37e2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/738a1dc4-80bd-4ede-bde7-b641821d37e2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c62" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/62", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c63", - "@type": "sc:Canvas", - "label": "59", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9cff10fa-75d7-4085-a6ef-ee6928755db3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9cff10fa-75d7-4085-a6ef-ee6928755db3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=63", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9cff10fa-75d7-4085-a6ef-ee6928755db3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9cff10fa-75d7-4085-a6ef-ee6928755db3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9cff10fa-75d7-4085-a6ef-ee6928755db3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c63" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/63", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c64", - "@type": "sc:Canvas", - "label": "60", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d2220168-0180-4105-9638-667316900437/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d2220168-0180-4105-9638-667316900437", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=64", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d2220168-0180-4105-9638-667316900437", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d2220168-0180-4105-9638-667316900437/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d2220168-0180-4105-9638-667316900437", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c64" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/64", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c65", - "@type": "sc:Canvas", - "label": "61", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/322b2f9d-799b-451e-8161-c872667633fa/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/322b2f9d-799b-451e-8161-c872667633fa", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=65", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/322b2f9d-799b-451e-8161-c872667633fa", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/322b2f9d-799b-451e-8161-c872667633fa/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/322b2f9d-799b-451e-8161-c872667633fa", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c65" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/65", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c66", - "@type": "sc:Canvas", - "label": "62", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ef4e13ff-78c4-407e-a8e4-8ab2d9da851d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ef4e13ff-78c4-407e-a8e4-8ab2d9da851d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=66", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ef4e13ff-78c4-407e-a8e4-8ab2d9da851d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ef4e13ff-78c4-407e-a8e4-8ab2d9da851d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ef4e13ff-78c4-407e-a8e4-8ab2d9da851d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c66" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/66", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c67", - "@type": "sc:Canvas", - "label": "63", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4b192224-5daa-4e2e-b4b9-e5fb6cf74f52/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4b192224-5daa-4e2e-b4b9-e5fb6cf74f52", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=67", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4b192224-5daa-4e2e-b4b9-e5fb6cf74f52", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4b192224-5daa-4e2e-b4b9-e5fb6cf74f52/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4b192224-5daa-4e2e-b4b9-e5fb6cf74f52", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c67" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/67", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c68", - "@type": "sc:Canvas", - "label": "64", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/320ef594-0b61-4baa-8fa3-4f232d4b3b37/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/320ef594-0b61-4baa-8fa3-4f232d4b3b37", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=68", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/320ef594-0b61-4baa-8fa3-4f232d4b3b37", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/320ef594-0b61-4baa-8fa3-4f232d4b3b37/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/320ef594-0b61-4baa-8fa3-4f232d4b3b37", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c68" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/68", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c69", - "@type": "sc:Canvas", - "label": "65", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ffaef912-eb99-4b27-9a6c-01ab562ffa08/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ffaef912-eb99-4b27-9a6c-01ab562ffa08", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=69", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ffaef912-eb99-4b27-9a6c-01ab562ffa08", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ffaef912-eb99-4b27-9a6c-01ab562ffa08/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ffaef912-eb99-4b27-9a6c-01ab562ffa08", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c69" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/69", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c70", - "@type": "sc:Canvas", - "label": "66", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/20c7b1cd-516a-4b04-8a29-08e440bdce77/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/20c7b1cd-516a-4b04-8a29-08e440bdce77", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=70", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/20c7b1cd-516a-4b04-8a29-08e440bdce77", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/20c7b1cd-516a-4b04-8a29-08e440bdce77/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/20c7b1cd-516a-4b04-8a29-08e440bdce77", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c70" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/70", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c71", - "@type": "sc:Canvas", - "label": "67", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2284735a-a52e-4f38-9717-f01de309c632/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2284735a-a52e-4f38-9717-f01de309c632", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=71", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2284735a-a52e-4f38-9717-f01de309c632", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2284735a-a52e-4f38-9717-f01de309c632/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2284735a-a52e-4f38-9717-f01de309c632", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c71" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/71", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c72", - "@type": "sc:Canvas", - "label": "68", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/53fa0234-1095-4c26-883f-9a1b28763571/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/53fa0234-1095-4c26-883f-9a1b28763571", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=72", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/53fa0234-1095-4c26-883f-9a1b28763571", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/53fa0234-1095-4c26-883f-9a1b28763571/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/53fa0234-1095-4c26-883f-9a1b28763571", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c72" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/72", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c73", - "@type": "sc:Canvas", - "label": "69", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0bcc2c99-d4f9-467f-89ba-9b3475a38b38/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0bcc2c99-d4f9-467f-89ba-9b3475a38b38", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=73", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0bcc2c99-d4f9-467f-89ba-9b3475a38b38", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0bcc2c99-d4f9-467f-89ba-9b3475a38b38/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0bcc2c99-d4f9-467f-89ba-9b3475a38b38", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c73" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/73", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c74", - "@type": "sc:Canvas", - "label": "70", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/20659f03-01fa-482a-8174-7d28baebc8dc/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/20659f03-01fa-482a-8174-7d28baebc8dc", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=74", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/20659f03-01fa-482a-8174-7d28baebc8dc", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/20659f03-01fa-482a-8174-7d28baebc8dc/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/20659f03-01fa-482a-8174-7d28baebc8dc", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c74" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/74", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c75", - "@type": "sc:Canvas", - "label": "71", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/250a6742-d871-4a0c-83c8-0f0cc6c3f8fb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/250a6742-d871-4a0c-83c8-0f0cc6c3f8fb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=75", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/250a6742-d871-4a0c-83c8-0f0cc6c3f8fb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/250a6742-d871-4a0c-83c8-0f0cc6c3f8fb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/250a6742-d871-4a0c-83c8-0f0cc6c3f8fb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c75" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/75", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c76", - "@type": "sc:Canvas", - "label": "72", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d30c3cff-d245-47f0-975f-9c2a8e099293/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d30c3cff-d245-47f0-975f-9c2a8e099293", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=76", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d30c3cff-d245-47f0-975f-9c2a8e099293", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d30c3cff-d245-47f0-975f-9c2a8e099293/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d30c3cff-d245-47f0-975f-9c2a8e099293", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c76" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/76", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c77", - "@type": "sc:Canvas", - "label": "73", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5be4c980-c36f-49d0-b6b5-94d312f84e14/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5be4c980-c36f-49d0-b6b5-94d312f84e14", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=77", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5be4c980-c36f-49d0-b6b5-94d312f84e14", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5be4c980-c36f-49d0-b6b5-94d312f84e14/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5be4c980-c36f-49d0-b6b5-94d312f84e14", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c77" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/77", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c78", - "@type": "sc:Canvas", - "label": "74", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7da5f336-560e-4930-b810-8f8ffd069260/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7da5f336-560e-4930-b810-8f8ffd069260", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=78", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7da5f336-560e-4930-b810-8f8ffd069260", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7da5f336-560e-4930-b810-8f8ffd069260/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7da5f336-560e-4930-b810-8f8ffd069260", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c78" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/78", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c79", - "@type": "sc:Canvas", - "label": "75", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/295fe294-cfef-419b-a536-14a71d94adca/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/295fe294-cfef-419b-a536-14a71d94adca", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=79", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/295fe294-cfef-419b-a536-14a71d94adca", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/295fe294-cfef-419b-a536-14a71d94adca/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/295fe294-cfef-419b-a536-14a71d94adca", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c79" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/79", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c80", - "@type": "sc:Canvas", - "label": "76", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8409ca9a-6603-4639-9835-315503ed2cad/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8409ca9a-6603-4639-9835-315503ed2cad", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=80", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8409ca9a-6603-4639-9835-315503ed2cad", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8409ca9a-6603-4639-9835-315503ed2cad/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8409ca9a-6603-4639-9835-315503ed2cad", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c80" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/80", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c81", - "@type": "sc:Canvas", - "label": "77", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e0433283-52d7-4478-9b7e-08b91a304e02/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e0433283-52d7-4478-9b7e-08b91a304e02", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=81", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e0433283-52d7-4478-9b7e-08b91a304e02", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e0433283-52d7-4478-9b7e-08b91a304e02/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e0433283-52d7-4478-9b7e-08b91a304e02", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c81" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/81", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c82", - "@type": "sc:Canvas", - "label": "78", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1996f4fa-31f1-44b4-b3bf-5ec933781747/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1996f4fa-31f1-44b4-b3bf-5ec933781747", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=82", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1996f4fa-31f1-44b4-b3bf-5ec933781747", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1996f4fa-31f1-44b4-b3bf-5ec933781747/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1996f4fa-31f1-44b4-b3bf-5ec933781747", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c82" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/82", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c83", - "@type": "sc:Canvas", - "label": "79", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/50c195bb-ea30-4180-b9a2-120073cb53bd/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/50c195bb-ea30-4180-b9a2-120073cb53bd", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=83", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/50c195bb-ea30-4180-b9a2-120073cb53bd", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/50c195bb-ea30-4180-b9a2-120073cb53bd/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/50c195bb-ea30-4180-b9a2-120073cb53bd", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c83" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/83", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c84", - "@type": "sc:Canvas", - "label": "80", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9870b598-d070-4402-bc42-c98a5250d52f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9870b598-d070-4402-bc42-c98a5250d52f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=84", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9870b598-d070-4402-bc42-c98a5250d52f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9870b598-d070-4402-bc42-c98a5250d52f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9870b598-d070-4402-bc42-c98a5250d52f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c84" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/84", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c85", - "@type": "sc:Canvas", - "label": "81", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1fdbae87-573d-42e9-b9af-77074af9d1fe/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1fdbae87-573d-42e9-b9af-77074af9d1fe", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=85", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1fdbae87-573d-42e9-b9af-77074af9d1fe", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1fdbae87-573d-42e9-b9af-77074af9d1fe/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1fdbae87-573d-42e9-b9af-77074af9d1fe", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c85" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/85", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c86", - "@type": "sc:Canvas", - "label": "82", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/30988807-b605-4a26-b094-bef00c228f25/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/30988807-b605-4a26-b094-bef00c228f25", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=86", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/30988807-b605-4a26-b094-bef00c228f25", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/30988807-b605-4a26-b094-bef00c228f25/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/30988807-b605-4a26-b094-bef00c228f25", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c86" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/86", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c87", - "@type": "sc:Canvas", - "label": "83", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6d215c26-85d5-42a9-9a7a-7e3a8935b1c1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6d215c26-85d5-42a9-9a7a-7e3a8935b1c1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=87", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6d215c26-85d5-42a9-9a7a-7e3a8935b1c1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6d215c26-85d5-42a9-9a7a-7e3a8935b1c1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6d215c26-85d5-42a9-9a7a-7e3a8935b1c1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c87" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/87", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c88", - "@type": "sc:Canvas", - "label": "84", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ddd69747-8738-494f-acd8-17060ef043f2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ddd69747-8738-494f-acd8-17060ef043f2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=88", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ddd69747-8738-494f-acd8-17060ef043f2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ddd69747-8738-494f-acd8-17060ef043f2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ddd69747-8738-494f-acd8-17060ef043f2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c88" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/88", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c89", - "@type": "sc:Canvas", - "label": "85", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d6386ff5-601f-4eba-aa73-70ec5422e33a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d6386ff5-601f-4eba-aa73-70ec5422e33a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=89", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d6386ff5-601f-4eba-aa73-70ec5422e33a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d6386ff5-601f-4eba-aa73-70ec5422e33a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d6386ff5-601f-4eba-aa73-70ec5422e33a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c89" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/89", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c90", - "@type": "sc:Canvas", - "label": "86", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/940834e3-b451-44a9-ab17-21ac1ac356b4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/940834e3-b451-44a9-ab17-21ac1ac356b4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=90", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/940834e3-b451-44a9-ab17-21ac1ac356b4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/940834e3-b451-44a9-ab17-21ac1ac356b4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/940834e3-b451-44a9-ab17-21ac1ac356b4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c90" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/90", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c91", - "@type": "sc:Canvas", - "label": "87", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7bac0daf-7c41-4d89-a605-021aba2ed373/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7bac0daf-7c41-4d89-a605-021aba2ed373", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=91", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7bac0daf-7c41-4d89-a605-021aba2ed373", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7bac0daf-7c41-4d89-a605-021aba2ed373/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7bac0daf-7c41-4d89-a605-021aba2ed373", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c91" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/91", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c92", - "@type": "sc:Canvas", - "label": "88", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d6a521e4-5ff3-4aed-92bd-e1b08c45f972/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d6a521e4-5ff3-4aed-92bd-e1b08c45f972", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=92", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d6a521e4-5ff3-4aed-92bd-e1b08c45f972", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d6a521e4-5ff3-4aed-92bd-e1b08c45f972/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d6a521e4-5ff3-4aed-92bd-e1b08c45f972", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c92" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/92", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c93", - "@type": "sc:Canvas", - "label": "89", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/cd7a734c-3a1c-4907-ac70-7ddf7d02ae33/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/cd7a734c-3a1c-4907-ac70-7ddf7d02ae33", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=93", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/cd7a734c-3a1c-4907-ac70-7ddf7d02ae33", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/cd7a734c-3a1c-4907-ac70-7ddf7d02ae33/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/cd7a734c-3a1c-4907-ac70-7ddf7d02ae33", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c93" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/93", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c94", - "@type": "sc:Canvas", - "label": "90", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6ad95485-5693-4fea-bba5-c995f89d898a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6ad95485-5693-4fea-bba5-c995f89d898a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=94", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6ad95485-5693-4fea-bba5-c995f89d898a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6ad95485-5693-4fea-bba5-c995f89d898a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6ad95485-5693-4fea-bba5-c995f89d898a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c94" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/94", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c95", - "@type": "sc:Canvas", - "label": "91", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/06124e05-1bbb-43c7-88e2-a646c2333f46/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/06124e05-1bbb-43c7-88e2-a646c2333f46", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=95", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/06124e05-1bbb-43c7-88e2-a646c2333f46", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/06124e05-1bbb-43c7-88e2-a646c2333f46/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/06124e05-1bbb-43c7-88e2-a646c2333f46", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c95" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/95", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c96", - "@type": "sc:Canvas", - "label": "92", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/40fd44a7-f58c-4430-9fdf-40499784f992/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/40fd44a7-f58c-4430-9fdf-40499784f992", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=96", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/40fd44a7-f58c-4430-9fdf-40499784f992", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/40fd44a7-f58c-4430-9fdf-40499784f992/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/40fd44a7-f58c-4430-9fdf-40499784f992", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c96" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/96", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c97", - "@type": "sc:Canvas", - "label": "93", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b79402cd-55ee-4d41-97bc-d624079c2481/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b79402cd-55ee-4d41-97bc-d624079c2481", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=97", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b79402cd-55ee-4d41-97bc-d624079c2481", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b79402cd-55ee-4d41-97bc-d624079c2481/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b79402cd-55ee-4d41-97bc-d624079c2481", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c97" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/97", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c98", - "@type": "sc:Canvas", - "label": "94", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2bffd09a-7ecd-4368-addf-2d00e30fd174/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2bffd09a-7ecd-4368-addf-2d00e30fd174", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=98", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2bffd09a-7ecd-4368-addf-2d00e30fd174", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2bffd09a-7ecd-4368-addf-2d00e30fd174/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2bffd09a-7ecd-4368-addf-2d00e30fd174", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c98" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/98", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c99", - "@type": "sc:Canvas", - "label": "95", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e24f05b2-117a-4149-82ad-bd03ba3a3b75/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e24f05b2-117a-4149-82ad-bd03ba3a3b75", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=99", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e24f05b2-117a-4149-82ad-bd03ba3a3b75", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e24f05b2-117a-4149-82ad-bd03ba3a3b75/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e24f05b2-117a-4149-82ad-bd03ba3a3b75", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c99" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/99", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c100", - "@type": "sc:Canvas", - "label": "96", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e2dc3c3e-6e41-441f-bd61-6f509b31ca98/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e2dc3c3e-6e41-441f-bd61-6f509b31ca98", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=100", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e2dc3c3e-6e41-441f-bd61-6f509b31ca98", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e2dc3c3e-6e41-441f-bd61-6f509b31ca98/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e2dc3c3e-6e41-441f-bd61-6f509b31ca98", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c100" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/100", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c101", - "@type": "sc:Canvas", - "label": "97", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7f60c964-84df-49b8-a2f8-c1e2d0b51c32/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7f60c964-84df-49b8-a2f8-c1e2d0b51c32", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=101", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7f60c964-84df-49b8-a2f8-c1e2d0b51c32", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7f60c964-84df-49b8-a2f8-c1e2d0b51c32/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7f60c964-84df-49b8-a2f8-c1e2d0b51c32", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c101" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/101", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c102", - "@type": "sc:Canvas", - "label": "98", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/75fe343e-c637-4fe6-a84f-a0ec8ed6b572/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/75fe343e-c637-4fe6-a84f-a0ec8ed6b572", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=102", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/75fe343e-c637-4fe6-a84f-a0ec8ed6b572", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/75fe343e-c637-4fe6-a84f-a0ec8ed6b572/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/75fe343e-c637-4fe6-a84f-a0ec8ed6b572", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c102" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/102", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c103", - "@type": "sc:Canvas", - "label": "99", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4f723ff9-c73a-4333-acdb-bba3d9d6b03d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4f723ff9-c73a-4333-acdb-bba3d9d6b03d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=103", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4f723ff9-c73a-4333-acdb-bba3d9d6b03d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4f723ff9-c73a-4333-acdb-bba3d9d6b03d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4f723ff9-c73a-4333-acdb-bba3d9d6b03d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c103" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/103", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c104", - "@type": "sc:Canvas", - "label": "100", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c20d81ea-4879-4a8d-94ef-caf481728e5c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c20d81ea-4879-4a8d-94ef-caf481728e5c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=104", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c20d81ea-4879-4a8d-94ef-caf481728e5c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c20d81ea-4879-4a8d-94ef-caf481728e5c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c20d81ea-4879-4a8d-94ef-caf481728e5c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c104" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/104", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c105", - "@type": "sc:Canvas", - "label": "101", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/26f58ceb-9456-496f-9b78-5305384af90c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/26f58ceb-9456-496f-9b78-5305384af90c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=105", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/26f58ceb-9456-496f-9b78-5305384af90c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/26f58ceb-9456-496f-9b78-5305384af90c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/26f58ceb-9456-496f-9b78-5305384af90c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c105" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/105", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c106", - "@type": "sc:Canvas", - "label": "102", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3471e4c7-c6f4-492f-a61f-d3afe2d3cb20/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3471e4c7-c6f4-492f-a61f-d3afe2d3cb20", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=106", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3471e4c7-c6f4-492f-a61f-d3afe2d3cb20", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3471e4c7-c6f4-492f-a61f-d3afe2d3cb20/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3471e4c7-c6f4-492f-a61f-d3afe2d3cb20", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c106" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/106", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c107", - "@type": "sc:Canvas", - "label": "103", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3f0a1688-4f46-4e89-a320-2758f1c20735/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3f0a1688-4f46-4e89-a320-2758f1c20735", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=107", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3f0a1688-4f46-4e89-a320-2758f1c20735", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3f0a1688-4f46-4e89-a320-2758f1c20735/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3f0a1688-4f46-4e89-a320-2758f1c20735", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c107" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/107", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c108", - "@type": "sc:Canvas", - "label": "104", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4926402b-13a8-4a5a-be5d-e9f4c68a9c51/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4926402b-13a8-4a5a-be5d-e9f4c68a9c51", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=108", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4926402b-13a8-4a5a-be5d-e9f4c68a9c51", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4926402b-13a8-4a5a-be5d-e9f4c68a9c51/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4926402b-13a8-4a5a-be5d-e9f4c68a9c51", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c108" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/108", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c109", - "@type": "sc:Canvas", - "label": "105", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9d1fd227-fb2c-438d-b8c3-1200a4254309/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9d1fd227-fb2c-438d-b8c3-1200a4254309", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=109", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9d1fd227-fb2c-438d-b8c3-1200a4254309", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9d1fd227-fb2c-438d-b8c3-1200a4254309/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9d1fd227-fb2c-438d-b8c3-1200a4254309", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c109" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/109", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c110", - "@type": "sc:Canvas", - "label": "106", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/767648c6-ad5d-4f1b-897a-0a1bee746c09/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/767648c6-ad5d-4f1b-897a-0a1bee746c09", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=110", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/767648c6-ad5d-4f1b-897a-0a1bee746c09", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/767648c6-ad5d-4f1b-897a-0a1bee746c09/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/767648c6-ad5d-4f1b-897a-0a1bee746c09", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c110" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/110", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c111", - "@type": "sc:Canvas", - "label": "107", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/30ee0ef3-99a0-489f-bcf5-9ca27269087b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/30ee0ef3-99a0-489f-bcf5-9ca27269087b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=111", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/30ee0ef3-99a0-489f-bcf5-9ca27269087b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/30ee0ef3-99a0-489f-bcf5-9ca27269087b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/30ee0ef3-99a0-489f-bcf5-9ca27269087b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c111" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/111", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c112", - "@type": "sc:Canvas", - "label": "108", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6f7b4b37-fc84-4e24-9c21-bb21632a1114/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6f7b4b37-fc84-4e24-9c21-bb21632a1114", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=112", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6f7b4b37-fc84-4e24-9c21-bb21632a1114", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f7b4b37-fc84-4e24-9c21-bb21632a1114/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f7b4b37-fc84-4e24-9c21-bb21632a1114", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c112" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/112", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c113", - "@type": "sc:Canvas", - "label": "109", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/787c944a-0753-4198-b878-b76c1d8bfec7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/787c944a-0753-4198-b878-b76c1d8bfec7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=113", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/787c944a-0753-4198-b878-b76c1d8bfec7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/787c944a-0753-4198-b878-b76c1d8bfec7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/787c944a-0753-4198-b878-b76c1d8bfec7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c113" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/113", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c114", - "@type": "sc:Canvas", - "label": "110", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/fe29f435-beed-4531-9956-aa41e063a4a6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/fe29f435-beed-4531-9956-aa41e063a4a6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=114", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/fe29f435-beed-4531-9956-aa41e063a4a6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/fe29f435-beed-4531-9956-aa41e063a4a6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/fe29f435-beed-4531-9956-aa41e063a4a6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c114" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/114", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c115", - "@type": "sc:Canvas", - "label": "111", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/438453e3-1366-4594-babd-30b16dcf9c91/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/438453e3-1366-4594-babd-30b16dcf9c91", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=115", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/438453e3-1366-4594-babd-30b16dcf9c91", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/438453e3-1366-4594-babd-30b16dcf9c91/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/438453e3-1366-4594-babd-30b16dcf9c91", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c115" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/115", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c116", - "@type": "sc:Canvas", - "label": "112", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a1ede6a5-4cd3-4413-846a-1e43403af92a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a1ede6a5-4cd3-4413-846a-1e43403af92a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=116", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a1ede6a5-4cd3-4413-846a-1e43403af92a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a1ede6a5-4cd3-4413-846a-1e43403af92a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a1ede6a5-4cd3-4413-846a-1e43403af92a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c116" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/116", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c117", - "@type": "sc:Canvas", - "label": "113", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4771f186-3549-4319-81d5-e9bbca97bac2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4771f186-3549-4319-81d5-e9bbca97bac2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=117", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4771f186-3549-4319-81d5-e9bbca97bac2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4771f186-3549-4319-81d5-e9bbca97bac2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4771f186-3549-4319-81d5-e9bbca97bac2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c117" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/117", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c118", - "@type": "sc:Canvas", - "label": "114", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1b147432-0538-4cf9-a017-5e5d9fe988cd/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1b147432-0538-4cf9-a017-5e5d9fe988cd", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=118", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1b147432-0538-4cf9-a017-5e5d9fe988cd", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1b147432-0538-4cf9-a017-5e5d9fe988cd/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1b147432-0538-4cf9-a017-5e5d9fe988cd", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c118" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/118", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c119", - "@type": "sc:Canvas", - "label": "115", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/340ec5f5-27f1-4244-a2f3-4597df249cdf/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/340ec5f5-27f1-4244-a2f3-4597df249cdf", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=119", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/340ec5f5-27f1-4244-a2f3-4597df249cdf", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/340ec5f5-27f1-4244-a2f3-4597df249cdf/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/340ec5f5-27f1-4244-a2f3-4597df249cdf", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c119" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/119", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c120", - "@type": "sc:Canvas", - "label": "116", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/791ebf5d-8535-4829-939b-a62440fa30c5/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/791ebf5d-8535-4829-939b-a62440fa30c5", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=120", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/791ebf5d-8535-4829-939b-a62440fa30c5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/791ebf5d-8535-4829-939b-a62440fa30c5/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/791ebf5d-8535-4829-939b-a62440fa30c5", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c120" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/120", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c121", - "@type": "sc:Canvas", - "label": "117", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1a615ae0-dfcd-403c-bd11-985c7b28a8e7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1a615ae0-dfcd-403c-bd11-985c7b28a8e7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=121", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1a615ae0-dfcd-403c-bd11-985c7b28a8e7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1a615ae0-dfcd-403c-bd11-985c7b28a8e7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1a615ae0-dfcd-403c-bd11-985c7b28a8e7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c121" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/121", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c122", - "@type": "sc:Canvas", - "label": "118", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a4c0fb0a-b76a-46ba-a61e-a2acd6a84d61/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a4c0fb0a-b76a-46ba-a61e-a2acd6a84d61", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=122", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a4c0fb0a-b76a-46ba-a61e-a2acd6a84d61", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a4c0fb0a-b76a-46ba-a61e-a2acd6a84d61/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a4c0fb0a-b76a-46ba-a61e-a2acd6a84d61", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c122" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/122", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c123", - "@type": "sc:Canvas", - "label": "119", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b27e8ba7-eb06-4d30-b292-804d0c6333fb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b27e8ba7-eb06-4d30-b292-804d0c6333fb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=123", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b27e8ba7-eb06-4d30-b292-804d0c6333fb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b27e8ba7-eb06-4d30-b292-804d0c6333fb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b27e8ba7-eb06-4d30-b292-804d0c6333fb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c123" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/123", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c124", - "@type": "sc:Canvas", - "label": "120", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bf5b6d77-39bd-4b90-8717-3150f7b89cbb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bf5b6d77-39bd-4b90-8717-3150f7b89cbb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=124", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bf5b6d77-39bd-4b90-8717-3150f7b89cbb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bf5b6d77-39bd-4b90-8717-3150f7b89cbb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bf5b6d77-39bd-4b90-8717-3150f7b89cbb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c124" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/124", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c125", - "@type": "sc:Canvas", - "label": "121", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e861cbcf-1a28-45b7-9484-6a39a537c711/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e861cbcf-1a28-45b7-9484-6a39a537c711", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=125", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e861cbcf-1a28-45b7-9484-6a39a537c711", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e861cbcf-1a28-45b7-9484-6a39a537c711/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e861cbcf-1a28-45b7-9484-6a39a537c711", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c125" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/125", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c126", - "@type": "sc:Canvas", - "label": "122", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/49ca1a7a-5bf2-433b-8ee8-37e02212efc1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/49ca1a7a-5bf2-433b-8ee8-37e02212efc1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=126", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/49ca1a7a-5bf2-433b-8ee8-37e02212efc1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/49ca1a7a-5bf2-433b-8ee8-37e02212efc1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/49ca1a7a-5bf2-433b-8ee8-37e02212efc1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c126" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/126", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c127", - "@type": "sc:Canvas", - "label": "123", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6f45877f-26d5-439b-985c-f4522be1a092/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6f45877f-26d5-439b-985c-f4522be1a092", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=127", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6f45877f-26d5-439b-985c-f4522be1a092", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f45877f-26d5-439b-985c-f4522be1a092/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f45877f-26d5-439b-985c-f4522be1a092", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c127" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/127", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c128", - "@type": "sc:Canvas", - "label": "124", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f1f24056-98e1-4d58-af44-d5d6798428f2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f1f24056-98e1-4d58-af44-d5d6798428f2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=128", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f1f24056-98e1-4d58-af44-d5d6798428f2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f1f24056-98e1-4d58-af44-d5d6798428f2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f1f24056-98e1-4d58-af44-d5d6798428f2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c128" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/128", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c129", - "@type": "sc:Canvas", - "label": "125", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/60a3d960-27a2-458d-91aa-c8c33b335207/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/60a3d960-27a2-458d-91aa-c8c33b335207", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=129", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/60a3d960-27a2-458d-91aa-c8c33b335207", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/60a3d960-27a2-458d-91aa-c8c33b335207/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/60a3d960-27a2-458d-91aa-c8c33b335207", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c129" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/129", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c130", - "@type": "sc:Canvas", - "label": "126", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/508ba554-e43b-4e8f-ac7e-db61bad22274/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/508ba554-e43b-4e8f-ac7e-db61bad22274", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=130", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/508ba554-e43b-4e8f-ac7e-db61bad22274", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/508ba554-e43b-4e8f-ac7e-db61bad22274/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/508ba554-e43b-4e8f-ac7e-db61bad22274", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c130" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/130", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c131", - "@type": "sc:Canvas", - "label": "127", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5c79a896-d98c-4226-b5b0-8ca55c275c91/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5c79a896-d98c-4226-b5b0-8ca55c275c91", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=131", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5c79a896-d98c-4226-b5b0-8ca55c275c91", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c79a896-d98c-4226-b5b0-8ca55c275c91/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c79a896-d98c-4226-b5b0-8ca55c275c91", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c131" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/131", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c132", - "@type": "sc:Canvas", - "label": "128", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f867d379-d5a8-4933-b6b6-f31bc8886ba6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f867d379-d5a8-4933-b6b6-f31bc8886ba6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=132", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f867d379-d5a8-4933-b6b6-f31bc8886ba6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f867d379-d5a8-4933-b6b6-f31bc8886ba6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f867d379-d5a8-4933-b6b6-f31bc8886ba6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c132" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/132", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c133", - "@type": "sc:Canvas", - "label": "129", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8dd0efb4-0f8e-485d-be8c-bba361106a06/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8dd0efb4-0f8e-485d-be8c-bba361106a06", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=133", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8dd0efb4-0f8e-485d-be8c-bba361106a06", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8dd0efb4-0f8e-485d-be8c-bba361106a06/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8dd0efb4-0f8e-485d-be8c-bba361106a06", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c133" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/133", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c134", - "@type": "sc:Canvas", - "label": "130", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/41358bf9-6d1e-4dfd-a81f-309e5dfb7c9a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/41358bf9-6d1e-4dfd-a81f-309e5dfb7c9a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=134", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/41358bf9-6d1e-4dfd-a81f-309e5dfb7c9a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/41358bf9-6d1e-4dfd-a81f-309e5dfb7c9a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/41358bf9-6d1e-4dfd-a81f-309e5dfb7c9a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c134" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/134", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c135", - "@type": "sc:Canvas", - "label": "131", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/02383107-c476-4072-a7aa-cda8fb161905/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/02383107-c476-4072-a7aa-cda8fb161905", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=135", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/02383107-c476-4072-a7aa-cda8fb161905", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/02383107-c476-4072-a7aa-cda8fb161905/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/02383107-c476-4072-a7aa-cda8fb161905", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c135" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/135", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c136", - "@type": "sc:Canvas", - "label": "132", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/66b3c104-fca5-459e-883f-7b5a4ac4de69/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/66b3c104-fca5-459e-883f-7b5a4ac4de69", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=136", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/66b3c104-fca5-459e-883f-7b5a4ac4de69", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/66b3c104-fca5-459e-883f-7b5a4ac4de69/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/66b3c104-fca5-459e-883f-7b5a4ac4de69", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c136" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/136", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c137", - "@type": "sc:Canvas", - "label": "133", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b2b90684-9599-4485-9a9f-a64ea8889f7f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b2b90684-9599-4485-9a9f-a64ea8889f7f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=137", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b2b90684-9599-4485-9a9f-a64ea8889f7f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b2b90684-9599-4485-9a9f-a64ea8889f7f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b2b90684-9599-4485-9a9f-a64ea8889f7f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c137" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/137", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c138", - "@type": "sc:Canvas", - "label": "134", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/db9c9810-df49-4071-9163-0354721b01d7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/db9c9810-df49-4071-9163-0354721b01d7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=138", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/db9c9810-df49-4071-9163-0354721b01d7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/db9c9810-df49-4071-9163-0354721b01d7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/db9c9810-df49-4071-9163-0354721b01d7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c138" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/138", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c139", - "@type": "sc:Canvas", - "label": "135", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/cd39dd66-0935-4bed-b779-4c861520b967/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/cd39dd66-0935-4bed-b779-4c861520b967", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=139", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/cd39dd66-0935-4bed-b779-4c861520b967", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/cd39dd66-0935-4bed-b779-4c861520b967/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/cd39dd66-0935-4bed-b779-4c861520b967", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c139" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/139", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c140", - "@type": "sc:Canvas", - "label": "136", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bc0682df-4d7c-40dc-87b9-e7ca7e9ed4d8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bc0682df-4d7c-40dc-87b9-e7ca7e9ed4d8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=140", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bc0682df-4d7c-40dc-87b9-e7ca7e9ed4d8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc0682df-4d7c-40dc-87b9-e7ca7e9ed4d8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc0682df-4d7c-40dc-87b9-e7ca7e9ed4d8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c140" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/140", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c141", - "@type": "sc:Canvas", - "label": "137", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/62965a16-4a06-4edf-a236-77abb9051600/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/62965a16-4a06-4edf-a236-77abb9051600", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=141", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/62965a16-4a06-4edf-a236-77abb9051600", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/62965a16-4a06-4edf-a236-77abb9051600/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/62965a16-4a06-4edf-a236-77abb9051600", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c141" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/141", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c142", - "@type": "sc:Canvas", - "label": "138", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2d903154-a204-449e-b294-754064956f02/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2d903154-a204-449e-b294-754064956f02", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=142", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2d903154-a204-449e-b294-754064956f02", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2d903154-a204-449e-b294-754064956f02/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2d903154-a204-449e-b294-754064956f02", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c142" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/142", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c143", - "@type": "sc:Canvas", - "label": "139", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/fc41d2a1-678e-441c-a2a8-db2e102e4662/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/fc41d2a1-678e-441c-a2a8-db2e102e4662", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=143", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/fc41d2a1-678e-441c-a2a8-db2e102e4662", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/fc41d2a1-678e-441c-a2a8-db2e102e4662/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/fc41d2a1-678e-441c-a2a8-db2e102e4662", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c143" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/143", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c144", - "@type": "sc:Canvas", - "label": "140", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4103f37c-d308-4727-8458-0d8ac6e54215/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4103f37c-d308-4727-8458-0d8ac6e54215", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=144", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4103f37c-d308-4727-8458-0d8ac6e54215", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4103f37c-d308-4727-8458-0d8ac6e54215/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4103f37c-d308-4727-8458-0d8ac6e54215", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c144" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/144", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c145", - "@type": "sc:Canvas", - "label": "141", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/72ebc1ba-1f4c-4cc4-afe2-ffbb17c91cb3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/72ebc1ba-1f4c-4cc4-afe2-ffbb17c91cb3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=145", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/72ebc1ba-1f4c-4cc4-afe2-ffbb17c91cb3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/72ebc1ba-1f4c-4cc4-afe2-ffbb17c91cb3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/72ebc1ba-1f4c-4cc4-afe2-ffbb17c91cb3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c145" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/145", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c146", - "@type": "sc:Canvas", - "label": "142", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f7b629cc-45a5-459d-a20b-b946a9575ec9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f7b629cc-45a5-459d-a20b-b946a9575ec9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=146", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f7b629cc-45a5-459d-a20b-b946a9575ec9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f7b629cc-45a5-459d-a20b-b946a9575ec9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f7b629cc-45a5-459d-a20b-b946a9575ec9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c146" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/146", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c147", - "@type": "sc:Canvas", - "label": "143", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a072ea47-196b-4412-b72b-51533d700be0/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a072ea47-196b-4412-b72b-51533d700be0", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=147", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a072ea47-196b-4412-b72b-51533d700be0", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a072ea47-196b-4412-b72b-51533d700be0/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a072ea47-196b-4412-b72b-51533d700be0", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c147" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/147", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c148", - "@type": "sc:Canvas", - "label": "144", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1451357e-1116-4a2c-9a27-0c60cfa679ad/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1451357e-1116-4a2c-9a27-0c60cfa679ad", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=148", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1451357e-1116-4a2c-9a27-0c60cfa679ad", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1451357e-1116-4a2c-9a27-0c60cfa679ad/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1451357e-1116-4a2c-9a27-0c60cfa679ad", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c148" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/148", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c149", - "@type": "sc:Canvas", - "label": "145", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bc38a3d5-d97d-4123-b744-9e2f9e3db57c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bc38a3d5-d97d-4123-b744-9e2f9e3db57c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=149", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bc38a3d5-d97d-4123-b744-9e2f9e3db57c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc38a3d5-d97d-4123-b744-9e2f9e3db57c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc38a3d5-d97d-4123-b744-9e2f9e3db57c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c149" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/149", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c150", - "@type": "sc:Canvas", - "label": "146", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7a4b2ee0-1798-4e5f-a6dd-a7e1a603cb8f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7a4b2ee0-1798-4e5f-a6dd-a7e1a603cb8f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=150", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7a4b2ee0-1798-4e5f-a6dd-a7e1a603cb8f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7a4b2ee0-1798-4e5f-a6dd-a7e1a603cb8f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7a4b2ee0-1798-4e5f-a6dd-a7e1a603cb8f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c150" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/150", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c151", - "@type": "sc:Canvas", - "label": "147", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/977aa97d-d331-4e60-b20d-b20f0f3b833c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/977aa97d-d331-4e60-b20d-b20f0f3b833c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=151", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/977aa97d-d331-4e60-b20d-b20f0f3b833c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/977aa97d-d331-4e60-b20d-b20f0f3b833c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/977aa97d-d331-4e60-b20d-b20f0f3b833c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c151" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/151", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c152", - "@type": "sc:Canvas", - "label": "148", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/028f8d86-508d-405e-a53f-57266da1bad3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/028f8d86-508d-405e-a53f-57266da1bad3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=152", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/028f8d86-508d-405e-a53f-57266da1bad3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/028f8d86-508d-405e-a53f-57266da1bad3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/028f8d86-508d-405e-a53f-57266da1bad3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c152" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/152", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c153", - "@type": "sc:Canvas", - "label": "149", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/445dc4c3-9c8d-4db8-966b-72c1281fe2a7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/445dc4c3-9c8d-4db8-966b-72c1281fe2a7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=153", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/445dc4c3-9c8d-4db8-966b-72c1281fe2a7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/445dc4c3-9c8d-4db8-966b-72c1281fe2a7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/445dc4c3-9c8d-4db8-966b-72c1281fe2a7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c153" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/153", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c154", - "@type": "sc:Canvas", - "label": "150", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/959882df-1306-402e-8465-15063c34862a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/959882df-1306-402e-8465-15063c34862a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=154", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/959882df-1306-402e-8465-15063c34862a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/959882df-1306-402e-8465-15063c34862a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/959882df-1306-402e-8465-15063c34862a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c154" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/154", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c155", - "@type": "sc:Canvas", - "label": "151", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/23cb4a21-d7f6-42de-bb3e-3519e795e528/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/23cb4a21-d7f6-42de-bb3e-3519e795e528", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=155", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/23cb4a21-d7f6-42de-bb3e-3519e795e528", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/23cb4a21-d7f6-42de-bb3e-3519e795e528/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/23cb4a21-d7f6-42de-bb3e-3519e795e528", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c155" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/155", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c156", - "@type": "sc:Canvas", - "label": "152", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b8698da0-d9de-40ec-890b-c10c2cb5793c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b8698da0-d9de-40ec-890b-c10c2cb5793c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=156", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b8698da0-d9de-40ec-890b-c10c2cb5793c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b8698da0-d9de-40ec-890b-c10c2cb5793c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b8698da0-d9de-40ec-890b-c10c2cb5793c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c156" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/156", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c157", - "@type": "sc:Canvas", - "label": "153", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/81f5a3fb-bf34-457c-b4b0-7dcfd0131f70/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/81f5a3fb-bf34-457c-b4b0-7dcfd0131f70", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=157", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/81f5a3fb-bf34-457c-b4b0-7dcfd0131f70", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/81f5a3fb-bf34-457c-b4b0-7dcfd0131f70/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/81f5a3fb-bf34-457c-b4b0-7dcfd0131f70", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c157" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/157", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c158", - "@type": "sc:Canvas", - "label": "154", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/75f54d22-2c6e-44f4-9728-4fa293e5abda/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/75f54d22-2c6e-44f4-9728-4fa293e5abda", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=158", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/75f54d22-2c6e-44f4-9728-4fa293e5abda", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/75f54d22-2c6e-44f4-9728-4fa293e5abda/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/75f54d22-2c6e-44f4-9728-4fa293e5abda", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c158" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/158", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c159", - "@type": "sc:Canvas", - "label": "155", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3203c59c-7b91-4251-9c61-4aee41cb2d23/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3203c59c-7b91-4251-9c61-4aee41cb2d23", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=159", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3203c59c-7b91-4251-9c61-4aee41cb2d23", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3203c59c-7b91-4251-9c61-4aee41cb2d23/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3203c59c-7b91-4251-9c61-4aee41cb2d23", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c159" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/159", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c160", - "@type": "sc:Canvas", - "label": "156", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b8334d57-fcbb-4222-9cb5-2bf47e874d83/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b8334d57-fcbb-4222-9cb5-2bf47e874d83", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=160", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b8334d57-fcbb-4222-9cb5-2bf47e874d83", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b8334d57-fcbb-4222-9cb5-2bf47e874d83/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b8334d57-fcbb-4222-9cb5-2bf47e874d83", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c160" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/160", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c161", - "@type": "sc:Canvas", - "label": "157", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7d64e4d4-6625-4355-bd17-c39344ac749b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7d64e4d4-6625-4355-bd17-c39344ac749b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=161", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7d64e4d4-6625-4355-bd17-c39344ac749b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7d64e4d4-6625-4355-bd17-c39344ac749b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7d64e4d4-6625-4355-bd17-c39344ac749b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c161" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/161", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c162", - "@type": "sc:Canvas", - "label": "158", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f144964e-6080-4a1c-bf5d-76366b9ed8c1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f144964e-6080-4a1c-bf5d-76366b9ed8c1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=162", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f144964e-6080-4a1c-bf5d-76366b9ed8c1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f144964e-6080-4a1c-bf5d-76366b9ed8c1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f144964e-6080-4a1c-bf5d-76366b9ed8c1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c162" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/162", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c163", - "@type": "sc:Canvas", - "label": "159", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/46820482-c28e-44b7-a925-d0338cf9bd1a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/46820482-c28e-44b7-a925-d0338cf9bd1a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=163", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/46820482-c28e-44b7-a925-d0338cf9bd1a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/46820482-c28e-44b7-a925-d0338cf9bd1a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/46820482-c28e-44b7-a925-d0338cf9bd1a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c163" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/163", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c164", - "@type": "sc:Canvas", - "label": "160", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bd338684-937c-4208-9fe3-f9d9d2571e55/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bd338684-937c-4208-9fe3-f9d9d2571e55", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=164", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bd338684-937c-4208-9fe3-f9d9d2571e55", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd338684-937c-4208-9fe3-f9d9d2571e55/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd338684-937c-4208-9fe3-f9d9d2571e55", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c164" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/164", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c165", - "@type": "sc:Canvas", - "label": "161", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/75e52f63-7638-49fa-9506-f86a286e8b4e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/75e52f63-7638-49fa-9506-f86a286e8b4e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=165", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/75e52f63-7638-49fa-9506-f86a286e8b4e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/75e52f63-7638-49fa-9506-f86a286e8b4e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/75e52f63-7638-49fa-9506-f86a286e8b4e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c165" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/165", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c166", - "@type": "sc:Canvas", - "label": "162", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ccc67c37-d121-4268-83b7-3a8257d01ee1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ccc67c37-d121-4268-83b7-3a8257d01ee1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=166", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ccc67c37-d121-4268-83b7-3a8257d01ee1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ccc67c37-d121-4268-83b7-3a8257d01ee1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ccc67c37-d121-4268-83b7-3a8257d01ee1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c166" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/166", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c167", - "@type": "sc:Canvas", - "label": "163", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/97bf8cb6-751e-4e38-9993-386d17ed1fb4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/97bf8cb6-751e-4e38-9993-386d17ed1fb4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=167", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/97bf8cb6-751e-4e38-9993-386d17ed1fb4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/97bf8cb6-751e-4e38-9993-386d17ed1fb4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/97bf8cb6-751e-4e38-9993-386d17ed1fb4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c167" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/167", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c168", - "@type": "sc:Canvas", - "label": "164", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5c76f6a7-c7d4-496c-ace8-5179706ee84a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5c76f6a7-c7d4-496c-ace8-5179706ee84a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=168", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5c76f6a7-c7d4-496c-ace8-5179706ee84a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c76f6a7-c7d4-496c-ace8-5179706ee84a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c76f6a7-c7d4-496c-ace8-5179706ee84a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c168" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/168", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c169", - "@type": "sc:Canvas", - "label": "165", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1d4b0c9e-f84f-41a3-926f-bb2fd679fc5c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1d4b0c9e-f84f-41a3-926f-bb2fd679fc5c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=169", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1d4b0c9e-f84f-41a3-926f-bb2fd679fc5c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1d4b0c9e-f84f-41a3-926f-bb2fd679fc5c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1d4b0c9e-f84f-41a3-926f-bb2fd679fc5c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c169" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/169", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c170", - "@type": "sc:Canvas", - "label": "166", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/cc487a7f-317d-48a8-9a98-5552877cb5a7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/cc487a7f-317d-48a8-9a98-5552877cb5a7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=170", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/cc487a7f-317d-48a8-9a98-5552877cb5a7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/cc487a7f-317d-48a8-9a98-5552877cb5a7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/cc487a7f-317d-48a8-9a98-5552877cb5a7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c170" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/170", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c171", - "@type": "sc:Canvas", - "label": "167", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a02de32f-1c01-4bcb-96cc-4d2b144aae5b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a02de32f-1c01-4bcb-96cc-4d2b144aae5b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=171", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a02de32f-1c01-4bcb-96cc-4d2b144aae5b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a02de32f-1c01-4bcb-96cc-4d2b144aae5b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a02de32f-1c01-4bcb-96cc-4d2b144aae5b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c171" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/171", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c172", - "@type": "sc:Canvas", - "label": "168", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/768a62ac-edfe-44ea-a3c1-b460e734245c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/768a62ac-edfe-44ea-a3c1-b460e734245c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=172", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/768a62ac-edfe-44ea-a3c1-b460e734245c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/768a62ac-edfe-44ea-a3c1-b460e734245c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/768a62ac-edfe-44ea-a3c1-b460e734245c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c172" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/172", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c173", - "@type": "sc:Canvas", - "label": "169", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/91d8e95c-6a25-4bcf-92f1-043742a164cf/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/91d8e95c-6a25-4bcf-92f1-043742a164cf", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=173", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/91d8e95c-6a25-4bcf-92f1-043742a164cf", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/91d8e95c-6a25-4bcf-92f1-043742a164cf/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/91d8e95c-6a25-4bcf-92f1-043742a164cf", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c173" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/173", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c174", - "@type": "sc:Canvas", - "label": "170", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/63edffc4-c002-4d14-974e-b005f9ace729/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/63edffc4-c002-4d14-974e-b005f9ace729", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=174", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/63edffc4-c002-4d14-974e-b005f9ace729", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/63edffc4-c002-4d14-974e-b005f9ace729/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/63edffc4-c002-4d14-974e-b005f9ace729", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c174" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/174", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c175", - "@type": "sc:Canvas", - "label": "171", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c55184b7-f2c6-440c-be25-81d4d44fc7de/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c55184b7-f2c6-440c-be25-81d4d44fc7de", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=175", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c55184b7-f2c6-440c-be25-81d4d44fc7de", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c55184b7-f2c6-440c-be25-81d4d44fc7de/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c55184b7-f2c6-440c-be25-81d4d44fc7de", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c175" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/175", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c176", - "@type": "sc:Canvas", - "label": "172", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/69f7cc93-a0ca-4df9-b009-b294d86458df/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/69f7cc93-a0ca-4df9-b009-b294d86458df", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=176", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/69f7cc93-a0ca-4df9-b009-b294d86458df", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/69f7cc93-a0ca-4df9-b009-b294d86458df/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/69f7cc93-a0ca-4df9-b009-b294d86458df", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c176" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/176", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c177", - "@type": "sc:Canvas", - "label": "173", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/16fae09b-fb91-4eb5-8eb3-6590dcda9e2e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/16fae09b-fb91-4eb5-8eb3-6590dcda9e2e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=177", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/16fae09b-fb91-4eb5-8eb3-6590dcda9e2e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/16fae09b-fb91-4eb5-8eb3-6590dcda9e2e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/16fae09b-fb91-4eb5-8eb3-6590dcda9e2e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c177" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/177", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c178", - "@type": "sc:Canvas", - "label": "174", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/09c6aaa1-4415-41cb-ba20-3d9618cd6dd4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/09c6aaa1-4415-41cb-ba20-3d9618cd6dd4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=178", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/09c6aaa1-4415-41cb-ba20-3d9618cd6dd4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/09c6aaa1-4415-41cb-ba20-3d9618cd6dd4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/09c6aaa1-4415-41cb-ba20-3d9618cd6dd4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c178" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/178", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c179", - "@type": "sc:Canvas", - "label": "175", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/21aeedf3-4cb6-48f2-a4b0-d6eb66d3a1b0/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/21aeedf3-4cb6-48f2-a4b0-d6eb66d3a1b0", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=179", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/21aeedf3-4cb6-48f2-a4b0-d6eb66d3a1b0", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/21aeedf3-4cb6-48f2-a4b0-d6eb66d3a1b0/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/21aeedf3-4cb6-48f2-a4b0-d6eb66d3a1b0", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c179" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/179", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c180", - "@type": "sc:Canvas", - "label": "176", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8acbe90f-c3d4-446f-afaa-b425892e7974/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8acbe90f-c3d4-446f-afaa-b425892e7974", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=180", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8acbe90f-c3d4-446f-afaa-b425892e7974", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8acbe90f-c3d4-446f-afaa-b425892e7974/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8acbe90f-c3d4-446f-afaa-b425892e7974", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c180" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/180", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c181", - "@type": "sc:Canvas", - "label": "177", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/15454337-1c30-4850-9df2-6f0e950b9d92/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/15454337-1c30-4850-9df2-6f0e950b9d92", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=181", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/15454337-1c30-4850-9df2-6f0e950b9d92", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/15454337-1c30-4850-9df2-6f0e950b9d92/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/15454337-1c30-4850-9df2-6f0e950b9d92", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c181" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/181", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c182", - "@type": "sc:Canvas", - "label": "178", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6e0c2754-5c40-4173-a45c-1a6dbd42b3d8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6e0c2754-5c40-4173-a45c-1a6dbd42b3d8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=182", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6e0c2754-5c40-4173-a45c-1a6dbd42b3d8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6e0c2754-5c40-4173-a45c-1a6dbd42b3d8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6e0c2754-5c40-4173-a45c-1a6dbd42b3d8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c182" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/182", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c183", - "@type": "sc:Canvas", - "label": "179", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/12e6ff80-216e-4b6a-8a1d-fc3de9c27cee/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/12e6ff80-216e-4b6a-8a1d-fc3de9c27cee", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=183", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/12e6ff80-216e-4b6a-8a1d-fc3de9c27cee", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/12e6ff80-216e-4b6a-8a1d-fc3de9c27cee/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/12e6ff80-216e-4b6a-8a1d-fc3de9c27cee", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c183" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/183", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c184", - "@type": "sc:Canvas", - "label": "180", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b5f9b5a6-533e-4f22-b284-858ffdce010c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b5f9b5a6-533e-4f22-b284-858ffdce010c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=184", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b5f9b5a6-533e-4f22-b284-858ffdce010c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b5f9b5a6-533e-4f22-b284-858ffdce010c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b5f9b5a6-533e-4f22-b284-858ffdce010c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c184" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/184", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c185", - "@type": "sc:Canvas", - "label": "181", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5f0375e5-97d9-48b8-b4cf-6613caa038c5/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5f0375e5-97d9-48b8-b4cf-6613caa038c5", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=185", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5f0375e5-97d9-48b8-b4cf-6613caa038c5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5f0375e5-97d9-48b8-b4cf-6613caa038c5/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5f0375e5-97d9-48b8-b4cf-6613caa038c5", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c185" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/185", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c186", - "@type": "sc:Canvas", - "label": "182", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/35331e23-4aae-4195-9d0e-bc54f728bb55/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/35331e23-4aae-4195-9d0e-bc54f728bb55", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=186", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/35331e23-4aae-4195-9d0e-bc54f728bb55", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/35331e23-4aae-4195-9d0e-bc54f728bb55/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/35331e23-4aae-4195-9d0e-bc54f728bb55", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c186" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/186", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c187", - "@type": "sc:Canvas", - "label": "183", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c5b98c22-2643-4038-9b43-4ebe1a8d9cc0/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c5b98c22-2643-4038-9b43-4ebe1a8d9cc0", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=187", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c5b98c22-2643-4038-9b43-4ebe1a8d9cc0", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c5b98c22-2643-4038-9b43-4ebe1a8d9cc0/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c5b98c22-2643-4038-9b43-4ebe1a8d9cc0", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c187" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/187", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c188", - "@type": "sc:Canvas", - "label": "184", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/68401dd3-8275-4e7e-b61c-79e04ff4fcee/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/68401dd3-8275-4e7e-b61c-79e04ff4fcee", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=188", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/68401dd3-8275-4e7e-b61c-79e04ff4fcee", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/68401dd3-8275-4e7e-b61c-79e04ff4fcee/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/68401dd3-8275-4e7e-b61c-79e04ff4fcee", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c188" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/188", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c189", - "@type": "sc:Canvas", - "label": "185", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ea2b371c-1ebc-4aa3-94de-48840570ce28/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ea2b371c-1ebc-4aa3-94de-48840570ce28", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=189", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ea2b371c-1ebc-4aa3-94de-48840570ce28", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ea2b371c-1ebc-4aa3-94de-48840570ce28/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ea2b371c-1ebc-4aa3-94de-48840570ce28", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c189" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/189", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c190", - "@type": "sc:Canvas", - "label": "186", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ae17d522-c6e2-4bc1-88bb-ab54e6ae5b2f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ae17d522-c6e2-4bc1-88bb-ab54e6ae5b2f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=190", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ae17d522-c6e2-4bc1-88bb-ab54e6ae5b2f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ae17d522-c6e2-4bc1-88bb-ab54e6ae5b2f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ae17d522-c6e2-4bc1-88bb-ab54e6ae5b2f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c190" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/190", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c191", - "@type": "sc:Canvas", - "label": "187", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/94166e46-0370-43e5-8e0d-fa41f9eb1fb5/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/94166e46-0370-43e5-8e0d-fa41f9eb1fb5", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=191", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/94166e46-0370-43e5-8e0d-fa41f9eb1fb5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/94166e46-0370-43e5-8e0d-fa41f9eb1fb5/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/94166e46-0370-43e5-8e0d-fa41f9eb1fb5", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c191" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/191", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c192", - "@type": "sc:Canvas", - "label": "188", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/409ab534-9705-4d53-b4ce-178ea3645dd0/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/409ab534-9705-4d53-b4ce-178ea3645dd0", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=192", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/409ab534-9705-4d53-b4ce-178ea3645dd0", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/409ab534-9705-4d53-b4ce-178ea3645dd0/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/409ab534-9705-4d53-b4ce-178ea3645dd0", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c192" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/192", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c193", - "@type": "sc:Canvas", - "label": "189", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/929fa88a-b66f-4d2a-8f21-fabe42ac20a6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/929fa88a-b66f-4d2a-8f21-fabe42ac20a6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=193", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/929fa88a-b66f-4d2a-8f21-fabe42ac20a6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/929fa88a-b66f-4d2a-8f21-fabe42ac20a6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/929fa88a-b66f-4d2a-8f21-fabe42ac20a6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c193" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/193", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c194", - "@type": "sc:Canvas", - "label": "190", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/69ae0b29-7e98-45fb-aef8-583cd3c3cf79/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/69ae0b29-7e98-45fb-aef8-583cd3c3cf79", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=194", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/69ae0b29-7e98-45fb-aef8-583cd3c3cf79", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/69ae0b29-7e98-45fb-aef8-583cd3c3cf79/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/69ae0b29-7e98-45fb-aef8-583cd3c3cf79", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c194" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/194", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c195", - "@type": "sc:Canvas", - "label": "191", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9e00d843-2348-4431-bf8d-a12dd56f84bf/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9e00d843-2348-4431-bf8d-a12dd56f84bf", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=195", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9e00d843-2348-4431-bf8d-a12dd56f84bf", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e00d843-2348-4431-bf8d-a12dd56f84bf/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e00d843-2348-4431-bf8d-a12dd56f84bf", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c195" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/195", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c196", - "@type": "sc:Canvas", - "label": "192", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5248cf2f-5ac5-4b1f-a5ae-1f733087b93d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5248cf2f-5ac5-4b1f-a5ae-1f733087b93d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=196", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5248cf2f-5ac5-4b1f-a5ae-1f733087b93d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5248cf2f-5ac5-4b1f-a5ae-1f733087b93d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5248cf2f-5ac5-4b1f-a5ae-1f733087b93d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c196" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/196", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c197", - "@type": "sc:Canvas", - "label": "193", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1d9ed8fe-8345-4d00-9cbc-cbe20ab26f9e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1d9ed8fe-8345-4d00-9cbc-cbe20ab26f9e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=197", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1d9ed8fe-8345-4d00-9cbc-cbe20ab26f9e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1d9ed8fe-8345-4d00-9cbc-cbe20ab26f9e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1d9ed8fe-8345-4d00-9cbc-cbe20ab26f9e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c197" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/197", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c198", - "@type": "sc:Canvas", - "label": "194", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f3b3b8ea-f44c-4f4a-8128-d63baccbe9bc/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f3b3b8ea-f44c-4f4a-8128-d63baccbe9bc", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=198", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f3b3b8ea-f44c-4f4a-8128-d63baccbe9bc", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f3b3b8ea-f44c-4f4a-8128-d63baccbe9bc/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f3b3b8ea-f44c-4f4a-8128-d63baccbe9bc", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c198" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/198", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c199", - "@type": "sc:Canvas", - "label": "195", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/10f63181-5d50-4130-a768-cbdc3a3b09e6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/10f63181-5d50-4130-a768-cbdc3a3b09e6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=199", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/10f63181-5d50-4130-a768-cbdc3a3b09e6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/10f63181-5d50-4130-a768-cbdc3a3b09e6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/10f63181-5d50-4130-a768-cbdc3a3b09e6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c199" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/199", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c200", - "@type": "sc:Canvas", - "label": "196", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d02cff8a-9e98-47c0-af22-bf1df4f6e02c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d02cff8a-9e98-47c0-af22-bf1df4f6e02c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=200", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d02cff8a-9e98-47c0-af22-bf1df4f6e02c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d02cff8a-9e98-47c0-af22-bf1df4f6e02c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d02cff8a-9e98-47c0-af22-bf1df4f6e02c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c200" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/200", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c201", - "@type": "sc:Canvas", - "label": "197", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f2b1c423-ac91-48d4-9257-80962eb7974d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f2b1c423-ac91-48d4-9257-80962eb7974d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=201", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f2b1c423-ac91-48d4-9257-80962eb7974d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f2b1c423-ac91-48d4-9257-80962eb7974d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f2b1c423-ac91-48d4-9257-80962eb7974d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c201" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/201", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c202", - "@type": "sc:Canvas", - "label": "198", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c13f5cdf-6413-473c-a23f-d8a31170c046/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c13f5cdf-6413-473c-a23f-d8a31170c046", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=202", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c13f5cdf-6413-473c-a23f-d8a31170c046", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c13f5cdf-6413-473c-a23f-d8a31170c046/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c13f5cdf-6413-473c-a23f-d8a31170c046", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c202" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/202", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c203", - "@type": "sc:Canvas", - "label": "199", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/507e81fe-8077-456a-805c-02c76a119c1f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/507e81fe-8077-456a-805c-02c76a119c1f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=203", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/507e81fe-8077-456a-805c-02c76a119c1f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/507e81fe-8077-456a-805c-02c76a119c1f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/507e81fe-8077-456a-805c-02c76a119c1f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c203" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/203", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c204", - "@type": "sc:Canvas", - "label": "200", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d56c3071-12bd-426a-94d4-d1573a7f330d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d56c3071-12bd-426a-94d4-d1573a7f330d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=204", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d56c3071-12bd-426a-94d4-d1573a7f330d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d56c3071-12bd-426a-94d4-d1573a7f330d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d56c3071-12bd-426a-94d4-d1573a7f330d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c204" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/204", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c205", - "@type": "sc:Canvas", - "label": "201", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/df2175c0-5e0d-46ea-8f67-0ab53a2e8b1b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/df2175c0-5e0d-46ea-8f67-0ab53a2e8b1b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=205", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/df2175c0-5e0d-46ea-8f67-0ab53a2e8b1b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/df2175c0-5e0d-46ea-8f67-0ab53a2e8b1b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/df2175c0-5e0d-46ea-8f67-0ab53a2e8b1b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c205" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/205", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c206", - "@type": "sc:Canvas", - "label": "202", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3246db67-f777-41b9-948e-083e51227fa9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3246db67-f777-41b9-948e-083e51227fa9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=206", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3246db67-f777-41b9-948e-083e51227fa9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3246db67-f777-41b9-948e-083e51227fa9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3246db67-f777-41b9-948e-083e51227fa9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c206" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/206", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c207", - "@type": "sc:Canvas", - "label": "203", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/fce1d85b-333a-4d97-993c-403dc6157e40/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/fce1d85b-333a-4d97-993c-403dc6157e40", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=207", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/fce1d85b-333a-4d97-993c-403dc6157e40", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/fce1d85b-333a-4d97-993c-403dc6157e40/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/fce1d85b-333a-4d97-993c-403dc6157e40", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c207" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/207", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c208", - "@type": "sc:Canvas", - "label": "204", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/03384542-30de-443f-844e-3bbf90cc82d9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/03384542-30de-443f-844e-3bbf90cc82d9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=208", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/03384542-30de-443f-844e-3bbf90cc82d9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/03384542-30de-443f-844e-3bbf90cc82d9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/03384542-30de-443f-844e-3bbf90cc82d9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c208" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/208", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c209", - "@type": "sc:Canvas", - "label": "205", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/50e222af-7170-412f-9b99-a8b0cdcad9ab/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/50e222af-7170-412f-9b99-a8b0cdcad9ab", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=209", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/50e222af-7170-412f-9b99-a8b0cdcad9ab", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/50e222af-7170-412f-9b99-a8b0cdcad9ab/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/50e222af-7170-412f-9b99-a8b0cdcad9ab", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c209" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/209", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c210", - "@type": "sc:Canvas", - "label": "206", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/37aa8f0e-0a80-4897-b2b8-3a14e0491713/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/37aa8f0e-0a80-4897-b2b8-3a14e0491713", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=210", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/37aa8f0e-0a80-4897-b2b8-3a14e0491713", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/37aa8f0e-0a80-4897-b2b8-3a14e0491713/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/37aa8f0e-0a80-4897-b2b8-3a14e0491713", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c210" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/210", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c211", - "@type": "sc:Canvas", - "label": "207", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d0cc3917-7dc6-4192-8a60-695f4a46a91e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d0cc3917-7dc6-4192-8a60-695f4a46a91e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=211", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d0cc3917-7dc6-4192-8a60-695f4a46a91e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d0cc3917-7dc6-4192-8a60-695f4a46a91e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d0cc3917-7dc6-4192-8a60-695f4a46a91e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c211" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/211", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c212", - "@type": "sc:Canvas", - "label": "208", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0d61bb7e-196c-41b2-b904-f1a5033518df/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0d61bb7e-196c-41b2-b904-f1a5033518df", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=212", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0d61bb7e-196c-41b2-b904-f1a5033518df", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0d61bb7e-196c-41b2-b904-f1a5033518df/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0d61bb7e-196c-41b2-b904-f1a5033518df", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c212" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/212", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c213", - "@type": "sc:Canvas", - "label": "209", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/be6c03d9-3a83-4ad8-9cf9-0278aa952bda/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/be6c03d9-3a83-4ad8-9cf9-0278aa952bda", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=213", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/be6c03d9-3a83-4ad8-9cf9-0278aa952bda", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/be6c03d9-3a83-4ad8-9cf9-0278aa952bda/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/be6c03d9-3a83-4ad8-9cf9-0278aa952bda", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c213" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/213", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c214", - "@type": "sc:Canvas", - "label": "210", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6be910d4-c7aa-4f84-b058-e6b699ce8c48/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6be910d4-c7aa-4f84-b058-e6b699ce8c48", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=214", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6be910d4-c7aa-4f84-b058-e6b699ce8c48", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6be910d4-c7aa-4f84-b058-e6b699ce8c48/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6be910d4-c7aa-4f84-b058-e6b699ce8c48", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c214" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/214", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c215", - "@type": "sc:Canvas", - "label": "211", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6e14ca3d-7284-4af6-8a0d-ef6adb13aab4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6e14ca3d-7284-4af6-8a0d-ef6adb13aab4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=215", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6e14ca3d-7284-4af6-8a0d-ef6adb13aab4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6e14ca3d-7284-4af6-8a0d-ef6adb13aab4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6e14ca3d-7284-4af6-8a0d-ef6adb13aab4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c215" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/215", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c216", - "@type": "sc:Canvas", - "label": "212", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/768abdc6-a43a-46a6-a2bb-73bddaebf5d4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/768abdc6-a43a-46a6-a2bb-73bddaebf5d4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=216", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/768abdc6-a43a-46a6-a2bb-73bddaebf5d4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/768abdc6-a43a-46a6-a2bb-73bddaebf5d4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/768abdc6-a43a-46a6-a2bb-73bddaebf5d4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c216" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/216", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c217", - "@type": "sc:Canvas", - "label": "213", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1e07e2fc-1a99-4e95-a4a8-de29284f8d59/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1e07e2fc-1a99-4e95-a4a8-de29284f8d59", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=217", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1e07e2fc-1a99-4e95-a4a8-de29284f8d59", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1e07e2fc-1a99-4e95-a4a8-de29284f8d59/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1e07e2fc-1a99-4e95-a4a8-de29284f8d59", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c217" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/217", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c218", - "@type": "sc:Canvas", - "label": "214", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/561ba2ba-e772-4e54-93dd-71b4f48ee6d4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/561ba2ba-e772-4e54-93dd-71b4f48ee6d4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=218", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/561ba2ba-e772-4e54-93dd-71b4f48ee6d4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/561ba2ba-e772-4e54-93dd-71b4f48ee6d4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/561ba2ba-e772-4e54-93dd-71b4f48ee6d4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c218" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/218", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c219", - "@type": "sc:Canvas", - "label": "215", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/d8698d33-2b5c-4d5b-809a-6c12907c3d4d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/d8698d33-2b5c-4d5b-809a-6c12907c3d4d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=219", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/d8698d33-2b5c-4d5b-809a-6c12907c3d4d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/d8698d33-2b5c-4d5b-809a-6c12907c3d4d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/d8698d33-2b5c-4d5b-809a-6c12907c3d4d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c219" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/219", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c220", - "@type": "sc:Canvas", - "label": "216", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e30fec9a-1a1d-49dd-9aae-72384cec2d7a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e30fec9a-1a1d-49dd-9aae-72384cec2d7a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=220", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e30fec9a-1a1d-49dd-9aae-72384cec2d7a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e30fec9a-1a1d-49dd-9aae-72384cec2d7a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e30fec9a-1a1d-49dd-9aae-72384cec2d7a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c220" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/220", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c221", - "@type": "sc:Canvas", - "label": "217", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/31cb86f6-879a-4169-9330-129d9ada7afa/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/31cb86f6-879a-4169-9330-129d9ada7afa", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=221", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/31cb86f6-879a-4169-9330-129d9ada7afa", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/31cb86f6-879a-4169-9330-129d9ada7afa/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/31cb86f6-879a-4169-9330-129d9ada7afa", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c221" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/221", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c222", - "@type": "sc:Canvas", - "label": "218", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/832324d2-17e4-4650-8f2b-d99a92f8f997/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/832324d2-17e4-4650-8f2b-d99a92f8f997", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=222", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/832324d2-17e4-4650-8f2b-d99a92f8f997", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/832324d2-17e4-4650-8f2b-d99a92f8f997/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/832324d2-17e4-4650-8f2b-d99a92f8f997", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c222" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/222", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c223", - "@type": "sc:Canvas", - "label": "219", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ca5a715d-be2d-4ce4-be98-e555e022bfeb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ca5a715d-be2d-4ce4-be98-e555e022bfeb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=223", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ca5a715d-be2d-4ce4-be98-e555e022bfeb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ca5a715d-be2d-4ce4-be98-e555e022bfeb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ca5a715d-be2d-4ce4-be98-e555e022bfeb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c223" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/223", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c224", - "@type": "sc:Canvas", - "label": "220", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9cd720da-909e-4f3b-bb86-94a2e0af04a9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9cd720da-909e-4f3b-bb86-94a2e0af04a9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=224", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9cd720da-909e-4f3b-bb86-94a2e0af04a9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9cd720da-909e-4f3b-bb86-94a2e0af04a9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9cd720da-909e-4f3b-bb86-94a2e0af04a9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c224" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/224", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c225", - "@type": "sc:Canvas", - "label": "221", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/80d78db5-8199-4dae-abce-186f3102b340/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/80d78db5-8199-4dae-abce-186f3102b340", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=225", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/80d78db5-8199-4dae-abce-186f3102b340", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/80d78db5-8199-4dae-abce-186f3102b340/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/80d78db5-8199-4dae-abce-186f3102b340", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c225" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/225", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c226", - "@type": "sc:Canvas", - "label": "222", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0459d429-8543-4f41-8f01-a7351e3b6bef/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0459d429-8543-4f41-8f01-a7351e3b6bef", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=226", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0459d429-8543-4f41-8f01-a7351e3b6bef", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0459d429-8543-4f41-8f01-a7351e3b6bef/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0459d429-8543-4f41-8f01-a7351e3b6bef", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c226" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/226", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c227", - "@type": "sc:Canvas", - "label": "223", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/cdcbd8d4-012d-4e5b-8711-bad9b37e0820/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/cdcbd8d4-012d-4e5b-8711-bad9b37e0820", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=227", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/cdcbd8d4-012d-4e5b-8711-bad9b37e0820", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/cdcbd8d4-012d-4e5b-8711-bad9b37e0820/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/cdcbd8d4-012d-4e5b-8711-bad9b37e0820", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c227" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/227", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c228", - "@type": "sc:Canvas", - "label": "224", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5623bd1b-0b0d-422a-94f2-5798b9a811b4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5623bd1b-0b0d-422a-94f2-5798b9a811b4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=228", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5623bd1b-0b0d-422a-94f2-5798b9a811b4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5623bd1b-0b0d-422a-94f2-5798b9a811b4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5623bd1b-0b0d-422a-94f2-5798b9a811b4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c228" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/228", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c229", - "@type": "sc:Canvas", - "label": "225", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a8b7ebc9-6e97-4761-9344-fcf86dbc4e00/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a8b7ebc9-6e97-4761-9344-fcf86dbc4e00", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=229", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a8b7ebc9-6e97-4761-9344-fcf86dbc4e00", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a8b7ebc9-6e97-4761-9344-fcf86dbc4e00/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a8b7ebc9-6e97-4761-9344-fcf86dbc4e00", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c229" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/229", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c230", - "@type": "sc:Canvas", - "label": "226", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/feb370f9-5d95-48db-81b5-914006adf7ae/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/feb370f9-5d95-48db-81b5-914006adf7ae", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=230", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/feb370f9-5d95-48db-81b5-914006adf7ae", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/feb370f9-5d95-48db-81b5-914006adf7ae/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/feb370f9-5d95-48db-81b5-914006adf7ae", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c230" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/230", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c231", - "@type": "sc:Canvas", - "label": "227", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/32b2847e-5853-45c7-91b4-d663fa80c55e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/32b2847e-5853-45c7-91b4-d663fa80c55e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=231", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/32b2847e-5853-45c7-91b4-d663fa80c55e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/32b2847e-5853-45c7-91b4-d663fa80c55e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/32b2847e-5853-45c7-91b4-d663fa80c55e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c231" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/231", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c232", - "@type": "sc:Canvas", - "label": "228", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/905e4f94-a655-4d87-8cd1-fab917e3b7db/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/905e4f94-a655-4d87-8cd1-fab917e3b7db", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=232", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/905e4f94-a655-4d87-8cd1-fab917e3b7db", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/905e4f94-a655-4d87-8cd1-fab917e3b7db/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/905e4f94-a655-4d87-8cd1-fab917e3b7db", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c232" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/232", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c233", - "@type": "sc:Canvas", - "label": "229", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7aa4c569-6441-47c0-acc7-6e7abfc235af/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7aa4c569-6441-47c0-acc7-6e7abfc235af", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=233", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7aa4c569-6441-47c0-acc7-6e7abfc235af", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7aa4c569-6441-47c0-acc7-6e7abfc235af/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7aa4c569-6441-47c0-acc7-6e7abfc235af", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c233" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/233", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c234", - "@type": "sc:Canvas", - "label": "230", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0e2c8fdf-0c7d-463d-9f6e-4c97fe96f8f8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0e2c8fdf-0c7d-463d-9f6e-4c97fe96f8f8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=234", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0e2c8fdf-0c7d-463d-9f6e-4c97fe96f8f8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0e2c8fdf-0c7d-463d-9f6e-4c97fe96f8f8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0e2c8fdf-0c7d-463d-9f6e-4c97fe96f8f8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c234" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/234", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c235", - "@type": "sc:Canvas", - "label": "231", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b0aa31e9-1d29-4ebf-bdc2-4bd27c4b67d7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b0aa31e9-1d29-4ebf-bdc2-4bd27c4b67d7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=235", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b0aa31e9-1d29-4ebf-bdc2-4bd27c4b67d7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b0aa31e9-1d29-4ebf-bdc2-4bd27c4b67d7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b0aa31e9-1d29-4ebf-bdc2-4bd27c4b67d7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c235" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/235", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c236", - "@type": "sc:Canvas", - "label": "232", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c86a47cb-d659-4fe8-b371-ee1742c0c9cc/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c86a47cb-d659-4fe8-b371-ee1742c0c9cc", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=236", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c86a47cb-d659-4fe8-b371-ee1742c0c9cc", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c86a47cb-d659-4fe8-b371-ee1742c0c9cc/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c86a47cb-d659-4fe8-b371-ee1742c0c9cc", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c236" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/236", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c237", - "@type": "sc:Canvas", - "label": "233", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/585e00c7-ed01-45b6-aef1-aaec1e82b85f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/585e00c7-ed01-45b6-aef1-aaec1e82b85f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=237", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/585e00c7-ed01-45b6-aef1-aaec1e82b85f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/585e00c7-ed01-45b6-aef1-aaec1e82b85f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/585e00c7-ed01-45b6-aef1-aaec1e82b85f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c237" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/237", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c238", - "@type": "sc:Canvas", - "label": "234", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/cdfa78df-7676-418f-9fde-3dc6e332e3b1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/cdfa78df-7676-418f-9fde-3dc6e332e3b1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=238", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/cdfa78df-7676-418f-9fde-3dc6e332e3b1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/cdfa78df-7676-418f-9fde-3dc6e332e3b1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/cdfa78df-7676-418f-9fde-3dc6e332e3b1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c238" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/238", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c239", - "@type": "sc:Canvas", - "label": "235", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9211e47b-b64b-4aed-b1a5-ba6e283d863c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9211e47b-b64b-4aed-b1a5-ba6e283d863c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=239", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9211e47b-b64b-4aed-b1a5-ba6e283d863c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9211e47b-b64b-4aed-b1a5-ba6e283d863c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9211e47b-b64b-4aed-b1a5-ba6e283d863c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c239" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/239", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c240", - "@type": "sc:Canvas", - "label": "236", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/864bd144-1414-43f6-a4cd-297a0583f852/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/864bd144-1414-43f6-a4cd-297a0583f852", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=240", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/864bd144-1414-43f6-a4cd-297a0583f852", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/864bd144-1414-43f6-a4cd-297a0583f852/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/864bd144-1414-43f6-a4cd-297a0583f852", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c240" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/240", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c241", - "@type": "sc:Canvas", - "label": "237", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9c9fd946-4608-48e3-9142-072009720c19/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9c9fd946-4608-48e3-9142-072009720c19", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=241", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9c9fd946-4608-48e3-9142-072009720c19", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9c9fd946-4608-48e3-9142-072009720c19/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9c9fd946-4608-48e3-9142-072009720c19", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c241" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/241", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c242", - "@type": "sc:Canvas", - "label": "238", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b5df3d01-bf2b-4bab-8d68-7fd8a27add8d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b5df3d01-bf2b-4bab-8d68-7fd8a27add8d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=242", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b5df3d01-bf2b-4bab-8d68-7fd8a27add8d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b5df3d01-bf2b-4bab-8d68-7fd8a27add8d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b5df3d01-bf2b-4bab-8d68-7fd8a27add8d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c242" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/242", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c243", - "@type": "sc:Canvas", - "label": "239", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ef375175-703e-406b-be30-6c91419dc176/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ef375175-703e-406b-be30-6c91419dc176", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=243", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ef375175-703e-406b-be30-6c91419dc176", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ef375175-703e-406b-be30-6c91419dc176/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ef375175-703e-406b-be30-6c91419dc176", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c243" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/243", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c244", - "@type": "sc:Canvas", - "label": "240", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7dd77069-2daa-4c93-bc2e-fefc69f09362/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7dd77069-2daa-4c93-bc2e-fefc69f09362", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=244", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7dd77069-2daa-4c93-bc2e-fefc69f09362", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7dd77069-2daa-4c93-bc2e-fefc69f09362/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7dd77069-2daa-4c93-bc2e-fefc69f09362", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c244" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/244", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c245", - "@type": "sc:Canvas", - "label": "241", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/70cf7be6-71fb-45cd-a95b-b7ee0dbd17fe/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/70cf7be6-71fb-45cd-a95b-b7ee0dbd17fe", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=245", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/70cf7be6-71fb-45cd-a95b-b7ee0dbd17fe", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/70cf7be6-71fb-45cd-a95b-b7ee0dbd17fe/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/70cf7be6-71fb-45cd-a95b-b7ee0dbd17fe", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c245" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/245", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c246", - "@type": "sc:Canvas", - "label": "242", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2c5d7daa-3594-41a4-b6d6-ae85061537f6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2c5d7daa-3594-41a4-b6d6-ae85061537f6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=246", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2c5d7daa-3594-41a4-b6d6-ae85061537f6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2c5d7daa-3594-41a4-b6d6-ae85061537f6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2c5d7daa-3594-41a4-b6d6-ae85061537f6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c246" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/246", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c247", - "@type": "sc:Canvas", - "label": "243", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/20ec3aa3-2963-4d8b-8029-7c96d241fbfc/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/20ec3aa3-2963-4d8b-8029-7c96d241fbfc", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=247", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/20ec3aa3-2963-4d8b-8029-7c96d241fbfc", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/20ec3aa3-2963-4d8b-8029-7c96d241fbfc/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/20ec3aa3-2963-4d8b-8029-7c96d241fbfc", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c247" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/247", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c248", - "@type": "sc:Canvas", - "label": "244", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/df812454-aac0-4f37-b171-b5ff982d63be/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/df812454-aac0-4f37-b171-b5ff982d63be", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=248", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/df812454-aac0-4f37-b171-b5ff982d63be", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/df812454-aac0-4f37-b171-b5ff982d63be/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/df812454-aac0-4f37-b171-b5ff982d63be", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c248" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/248", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c249", - "@type": "sc:Canvas", - "label": "245", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/62c30b16-5572-4874-b0a4-67d0d5e54a03/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/62c30b16-5572-4874-b0a4-67d0d5e54a03", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=249", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/62c30b16-5572-4874-b0a4-67d0d5e54a03", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/62c30b16-5572-4874-b0a4-67d0d5e54a03/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/62c30b16-5572-4874-b0a4-67d0d5e54a03", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c249" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/249", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c250", - "@type": "sc:Canvas", - "label": "246", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/dfd61c1f-151b-4255-9dee-57b690bc4fb9/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/dfd61c1f-151b-4255-9dee-57b690bc4fb9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=250", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/dfd61c1f-151b-4255-9dee-57b690bc4fb9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/dfd61c1f-151b-4255-9dee-57b690bc4fb9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/dfd61c1f-151b-4255-9dee-57b690bc4fb9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c250" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/250", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c251", - "@type": "sc:Canvas", - "label": "247", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/fb16d9ab-fd82-405d-a62a-aa890f57789c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/fb16d9ab-fd82-405d-a62a-aa890f57789c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=251", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/fb16d9ab-fd82-405d-a62a-aa890f57789c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/fb16d9ab-fd82-405d-a62a-aa890f57789c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/fb16d9ab-fd82-405d-a62a-aa890f57789c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c251" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/251", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c252", - "@type": "sc:Canvas", - "label": "248", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e828d899-ac0f-4faa-a06b-789b953edbd7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e828d899-ac0f-4faa-a06b-789b953edbd7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=252", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e828d899-ac0f-4faa-a06b-789b953edbd7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e828d899-ac0f-4faa-a06b-789b953edbd7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e828d899-ac0f-4faa-a06b-789b953edbd7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c252" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/252", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c253", - "@type": "sc:Canvas", - "label": "249", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/03373c2c-9eff-465a-bb3a-418839c8c904/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/03373c2c-9eff-465a-bb3a-418839c8c904", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=253", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/03373c2c-9eff-465a-bb3a-418839c8c904", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/03373c2c-9eff-465a-bb3a-418839c8c904/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/03373c2c-9eff-465a-bb3a-418839c8c904", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c253" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/253", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c254", - "@type": "sc:Canvas", - "label": "250", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5c544a71-1b26-4227-ba5c-d7614e06306d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5c544a71-1b26-4227-ba5c-d7614e06306d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=254", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5c544a71-1b26-4227-ba5c-d7614e06306d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c544a71-1b26-4227-ba5c-d7614e06306d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5c544a71-1b26-4227-ba5c-d7614e06306d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c254" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/254", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c255", - "@type": "sc:Canvas", - "label": "251", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6f48c78e-a89f-4e34-bbf7-f54adca00d96/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6f48c78e-a89f-4e34-bbf7-f54adca00d96", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=255", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6f48c78e-a89f-4e34-bbf7-f54adca00d96", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f48c78e-a89f-4e34-bbf7-f54adca00d96/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6f48c78e-a89f-4e34-bbf7-f54adca00d96", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c255" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/255", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c256", - "@type": "sc:Canvas", - "label": "252", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e4422c3a-1050-4f3a-af65-2dfe38646c25/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e4422c3a-1050-4f3a-af65-2dfe38646c25", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=256", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e4422c3a-1050-4f3a-af65-2dfe38646c25", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e4422c3a-1050-4f3a-af65-2dfe38646c25/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e4422c3a-1050-4f3a-af65-2dfe38646c25", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c256" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/256", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c257", - "@type": "sc:Canvas", - "label": "253", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/94bf2088-c56f-4ca7-a86e-4aa8126b7499/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/94bf2088-c56f-4ca7-a86e-4aa8126b7499", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=257", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/94bf2088-c56f-4ca7-a86e-4aa8126b7499", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/94bf2088-c56f-4ca7-a86e-4aa8126b7499/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/94bf2088-c56f-4ca7-a86e-4aa8126b7499", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c257" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/257", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c258", - "@type": "sc:Canvas", - "label": "254", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/849a301b-90e3-4622-89f2-cc44bafd43e3/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/849a301b-90e3-4622-89f2-cc44bafd43e3", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=258", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/849a301b-90e3-4622-89f2-cc44bafd43e3", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/849a301b-90e3-4622-89f2-cc44bafd43e3/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/849a301b-90e3-4622-89f2-cc44bafd43e3", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c258" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/258", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c259", - "@type": "sc:Canvas", - "label": "255", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/2147cfb2-02b0-4a34-ad2f-d81807c4b28f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/2147cfb2-02b0-4a34-ad2f-d81807c4b28f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=259", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/2147cfb2-02b0-4a34-ad2f-d81807c4b28f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/2147cfb2-02b0-4a34-ad2f-d81807c4b28f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/2147cfb2-02b0-4a34-ad2f-d81807c4b28f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c259" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/259", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c260", - "@type": "sc:Canvas", - "label": "256", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a9b2413a-e6e4-42cd-8647-d32fe6860bd7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a9b2413a-e6e4-42cd-8647-d32fe6860bd7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=260", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a9b2413a-e6e4-42cd-8647-d32fe6860bd7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a9b2413a-e6e4-42cd-8647-d32fe6860bd7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a9b2413a-e6e4-42cd-8647-d32fe6860bd7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c260" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/260", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c261", - "@type": "sc:Canvas", - "label": "257", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1327e475-beef-41db-a0cd-05347fefe174/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1327e475-beef-41db-a0cd-05347fefe174", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=261", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1327e475-beef-41db-a0cd-05347fefe174", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1327e475-beef-41db-a0cd-05347fefe174/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1327e475-beef-41db-a0cd-05347fefe174", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c261" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/261", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c262", - "@type": "sc:Canvas", - "label": "258", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/de457aa8-1752-4b2e-ad08-f357a49140b2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/de457aa8-1752-4b2e-ad08-f357a49140b2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=262", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/de457aa8-1752-4b2e-ad08-f357a49140b2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/de457aa8-1752-4b2e-ad08-f357a49140b2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/de457aa8-1752-4b2e-ad08-f357a49140b2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c262" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/262", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c263", - "@type": "sc:Canvas", - "label": "259", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/dd7288b5-6d95-448d-81d8-4ff91806719d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/dd7288b5-6d95-448d-81d8-4ff91806719d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=263", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/dd7288b5-6d95-448d-81d8-4ff91806719d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/dd7288b5-6d95-448d-81d8-4ff91806719d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/dd7288b5-6d95-448d-81d8-4ff91806719d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c263" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/263", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c264", - "@type": "sc:Canvas", - "label": "260", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0411dc56-c911-4785-aa01-e20168502e56/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0411dc56-c911-4785-aa01-e20168502e56", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=264", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0411dc56-c911-4785-aa01-e20168502e56", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0411dc56-c911-4785-aa01-e20168502e56/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0411dc56-c911-4785-aa01-e20168502e56", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c264" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/264", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c265", - "@type": "sc:Canvas", - "label": "261", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3c502115-d1af-4887-9876-3e0d85368c41/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3c502115-d1af-4887-9876-3e0d85368c41", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=265", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3c502115-d1af-4887-9876-3e0d85368c41", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3c502115-d1af-4887-9876-3e0d85368c41/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3c502115-d1af-4887-9876-3e0d85368c41", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c265" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/265", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c266", - "@type": "sc:Canvas", - "label": "262", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8d2d250a-bd68-4e71-80c1-0e535b4be11f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8d2d250a-bd68-4e71-80c1-0e535b4be11f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=266", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8d2d250a-bd68-4e71-80c1-0e535b4be11f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8d2d250a-bd68-4e71-80c1-0e535b4be11f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8d2d250a-bd68-4e71-80c1-0e535b4be11f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c266" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/266", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c267", - "@type": "sc:Canvas", - "label": "263", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c7061c7d-d667-4d74-b3a4-419ee2babf85/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c7061c7d-d667-4d74-b3a4-419ee2babf85", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=267", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c7061c7d-d667-4d74-b3a4-419ee2babf85", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c7061c7d-d667-4d74-b3a4-419ee2babf85/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c7061c7d-d667-4d74-b3a4-419ee2babf85", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c267" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/267", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c268", - "@type": "sc:Canvas", - "label": "264", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ea2001e8-6a39-470d-9a4e-d410acf7bca8/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ea2001e8-6a39-470d-9a4e-d410acf7bca8", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=268", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ea2001e8-6a39-470d-9a4e-d410acf7bca8", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ea2001e8-6a39-470d-9a4e-d410acf7bca8/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ea2001e8-6a39-470d-9a4e-d410acf7bca8", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c268" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/268", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c269", - "@type": "sc:Canvas", - "label": "265", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/298be765-9cc3-4697-8a0f-1b7d554c80ce/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/298be765-9cc3-4697-8a0f-1b7d554c80ce", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=269", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/298be765-9cc3-4697-8a0f-1b7d554c80ce", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/298be765-9cc3-4697-8a0f-1b7d554c80ce/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/298be765-9cc3-4697-8a0f-1b7d554c80ce", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c269" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/269", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c270", - "@type": "sc:Canvas", - "label": "266", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/efdeffc8-db6a-480b-9449-07b1aadf037a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/efdeffc8-db6a-480b-9449-07b1aadf037a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=270", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/efdeffc8-db6a-480b-9449-07b1aadf037a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/efdeffc8-db6a-480b-9449-07b1aadf037a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/efdeffc8-db6a-480b-9449-07b1aadf037a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c270" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/270", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c271", - "@type": "sc:Canvas", - "label": "267", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/826f5e08-bbe3-463b-aa4c-5774e4019bb7/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/826f5e08-bbe3-463b-aa4c-5774e4019bb7", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=271", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/826f5e08-bbe3-463b-aa4c-5774e4019bb7", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/826f5e08-bbe3-463b-aa4c-5774e4019bb7/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/826f5e08-bbe3-463b-aa4c-5774e4019bb7", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c271" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/271", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c272", - "@type": "sc:Canvas", - "label": "268", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bd2bfe0b-514f-4b14-b442-ede303f7f4ab/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bd2bfe0b-514f-4b14-b442-ede303f7f4ab", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=272", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bd2bfe0b-514f-4b14-b442-ede303f7f4ab", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd2bfe0b-514f-4b14-b442-ede303f7f4ab/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bd2bfe0b-514f-4b14-b442-ede303f7f4ab", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c272" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/272", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c273", - "@type": "sc:Canvas", - "label": "269", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/40d4c1b9-1349-44ba-a37e-e904a5fa545b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/40d4c1b9-1349-44ba-a37e-e904a5fa545b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=273", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/40d4c1b9-1349-44ba-a37e-e904a5fa545b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/40d4c1b9-1349-44ba-a37e-e904a5fa545b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/40d4c1b9-1349-44ba-a37e-e904a5fa545b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c273" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/273", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c274", - "@type": "sc:Canvas", - "label": "270", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b63262dc-efff-491c-bfe6-654744204f00/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b63262dc-efff-491c-bfe6-654744204f00", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=274", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b63262dc-efff-491c-bfe6-654744204f00", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b63262dc-efff-491c-bfe6-654744204f00/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b63262dc-efff-491c-bfe6-654744204f00", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c274" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/274", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c275", - "@type": "sc:Canvas", - "label": "271", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0472fdef-270c-4e1f-92be-a026e64e2879/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0472fdef-270c-4e1f-92be-a026e64e2879", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=275", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0472fdef-270c-4e1f-92be-a026e64e2879", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0472fdef-270c-4e1f-92be-a026e64e2879/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0472fdef-270c-4e1f-92be-a026e64e2879", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c275" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/275", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c276", - "@type": "sc:Canvas", - "label": "272", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b05b7d96-8eaa-40de-b859-e4049d5ed0d4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b05b7d96-8eaa-40de-b859-e4049d5ed0d4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=276", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b05b7d96-8eaa-40de-b859-e4049d5ed0d4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b05b7d96-8eaa-40de-b859-e4049d5ed0d4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b05b7d96-8eaa-40de-b859-e4049d5ed0d4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c276" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/276", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c277", - "@type": "sc:Canvas", - "label": "273", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/766ae4c5-d7de-4a6c-b83e-c396af942a94/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/766ae4c5-d7de-4a6c-b83e-c396af942a94", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=277", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/766ae4c5-d7de-4a6c-b83e-c396af942a94", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/766ae4c5-d7de-4a6c-b83e-c396af942a94/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/766ae4c5-d7de-4a6c-b83e-c396af942a94", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c277" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/277", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c278", - "@type": "sc:Canvas", - "label": "274", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/455c56b2-ef16-43b0-91f9-90e4ba9cb6e4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/455c56b2-ef16-43b0-91f9-90e4ba9cb6e4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=278", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/455c56b2-ef16-43b0-91f9-90e4ba9cb6e4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/455c56b2-ef16-43b0-91f9-90e4ba9cb6e4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/455c56b2-ef16-43b0-91f9-90e4ba9cb6e4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c278" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/278", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c279", - "@type": "sc:Canvas", - "label": "275", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7bd9b1e8-0216-4868-8803-afac22a4cd57/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7bd9b1e8-0216-4868-8803-afac22a4cd57", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=279", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7bd9b1e8-0216-4868-8803-afac22a4cd57", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7bd9b1e8-0216-4868-8803-afac22a4cd57/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7bd9b1e8-0216-4868-8803-afac22a4cd57", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c279" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/279", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c280", - "@type": "sc:Canvas", - "label": "276", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/7a7b0a01-b341-4875-a9fe-7a437ddb9cd5/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/7a7b0a01-b341-4875-a9fe-7a437ddb9cd5", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=280", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/7a7b0a01-b341-4875-a9fe-7a437ddb9cd5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/7a7b0a01-b341-4875-a9fe-7a437ddb9cd5/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/7a7b0a01-b341-4875-a9fe-7a437ddb9cd5", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c280" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/280", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c281", - "@type": "sc:Canvas", - "label": "277", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b34aa238-0f13-4a92-9a86-b012ca2bcf63/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b34aa238-0f13-4a92-9a86-b012ca2bcf63", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=281", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b34aa238-0f13-4a92-9a86-b012ca2bcf63", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b34aa238-0f13-4a92-9a86-b012ca2bcf63/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b34aa238-0f13-4a92-9a86-b012ca2bcf63", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c281" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/281", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c282", - "@type": "sc:Canvas", - "label": "278", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/c99d0a7a-1481-470c-a681-044d1b7b34b4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/c99d0a7a-1481-470c-a681-044d1b7b34b4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=282", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/c99d0a7a-1481-470c-a681-044d1b7b34b4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/c99d0a7a-1481-470c-a681-044d1b7b34b4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/c99d0a7a-1481-470c-a681-044d1b7b34b4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c282" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/282", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c283", - "@type": "sc:Canvas", - "label": "279", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/869ffc6e-c692-4336-ab2d-6097e2abb6bd/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/869ffc6e-c692-4336-ab2d-6097e2abb6bd", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=283", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/869ffc6e-c692-4336-ab2d-6097e2abb6bd", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/869ffc6e-c692-4336-ab2d-6097e2abb6bd/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/869ffc6e-c692-4336-ab2d-6097e2abb6bd", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c283" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/283", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c284", - "@type": "sc:Canvas", - "label": "280", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/babd8c19-23fb-49c3-8906-4d7c88423029/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/babd8c19-23fb-49c3-8906-4d7c88423029", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=284", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/babd8c19-23fb-49c3-8906-4d7c88423029", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/babd8c19-23fb-49c3-8906-4d7c88423029/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/babd8c19-23fb-49c3-8906-4d7c88423029", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c284" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/284", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c285", - "@type": "sc:Canvas", - "label": "281", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/0f3b8654-e16c-4073-bf16-5836d5888e41/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/0f3b8654-e16c-4073-bf16-5836d5888e41", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=285", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/0f3b8654-e16c-4073-bf16-5836d5888e41", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/0f3b8654-e16c-4073-bf16-5836d5888e41/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/0f3b8654-e16c-4073-bf16-5836d5888e41", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c285" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/285", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c286", - "@type": "sc:Canvas", - "label": "282", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/83daa212-a387-44d6-90e1-4d932e74551e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/83daa212-a387-44d6-90e1-4d932e74551e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=286", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/83daa212-a387-44d6-90e1-4d932e74551e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/83daa212-a387-44d6-90e1-4d932e74551e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/83daa212-a387-44d6-90e1-4d932e74551e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c286" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/286", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c287", - "@type": "sc:Canvas", - "label": "283", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/03d350a8-d74b-41f8-a977-0b1ea2817a2b/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/03d350a8-d74b-41f8-a977-0b1ea2817a2b", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=287", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/03d350a8-d74b-41f8-a977-0b1ea2817a2b", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/03d350a8-d74b-41f8-a977-0b1ea2817a2b/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/03d350a8-d74b-41f8-a977-0b1ea2817a2b", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c287" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/287", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c288", - "@type": "sc:Canvas", - "label": "284", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/32a48fa9-c698-45d0-b2bc-def4019d7542/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/32a48fa9-c698-45d0-b2bc-def4019d7542", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=288", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/32a48fa9-c698-45d0-b2bc-def4019d7542", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/32a48fa9-c698-45d0-b2bc-def4019d7542/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/32a48fa9-c698-45d0-b2bc-def4019d7542", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c288" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/288", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c289", - "@type": "sc:Canvas", - "label": "285", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/aa943ce1-b70d-4c70-a187-e89228d59584/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/aa943ce1-b70d-4c70-a187-e89228d59584", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=289", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/aa943ce1-b70d-4c70-a187-e89228d59584", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/aa943ce1-b70d-4c70-a187-e89228d59584/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/aa943ce1-b70d-4c70-a187-e89228d59584", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c289" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/289", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c290", - "@type": "sc:Canvas", - "label": "286", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3e0cb14a-a8fb-4ef9-ba3c-b79c9e9a0ec1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3e0cb14a-a8fb-4ef9-ba3c-b79c9e9a0ec1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=290", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3e0cb14a-a8fb-4ef9-ba3c-b79c9e9a0ec1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3e0cb14a-a8fb-4ef9-ba3c-b79c9e9a0ec1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3e0cb14a-a8fb-4ef9-ba3c-b79c9e9a0ec1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c290" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/290", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c291", - "@type": "sc:Canvas", - "label": "287", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/76c0de85-2e97-49d3-bd55-26a19196dad4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/76c0de85-2e97-49d3-bd55-26a19196dad4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=291", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/76c0de85-2e97-49d3-bd55-26a19196dad4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/76c0de85-2e97-49d3-bd55-26a19196dad4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/76c0de85-2e97-49d3-bd55-26a19196dad4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c291" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/291", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c292", - "@type": "sc:Canvas", - "label": "288", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/92bf1471-7e05-4968-beaa-a781cc54c702/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/92bf1471-7e05-4968-beaa-a781cc54c702", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=292", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/92bf1471-7e05-4968-beaa-a781cc54c702", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/92bf1471-7e05-4968-beaa-a781cc54c702/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/92bf1471-7e05-4968-beaa-a781cc54c702", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c292" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/292", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c293", - "@type": "sc:Canvas", - "label": "289", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/532f9f63-184e-4496-bff6-c9ecc76807e4/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/532f9f63-184e-4496-bff6-c9ecc76807e4", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=293", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/532f9f63-184e-4496-bff6-c9ecc76807e4", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/532f9f63-184e-4496-bff6-c9ecc76807e4/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/532f9f63-184e-4496-bff6-c9ecc76807e4", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c293" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/293", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c294", - "@type": "sc:Canvas", - "label": "290", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/9e4f9723-463b-4402-8cac-b64c5dd0e033/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/9e4f9723-463b-4402-8cac-b64c5dd0e033", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=294", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/9e4f9723-463b-4402-8cac-b64c5dd0e033", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e4f9723-463b-4402-8cac-b64c5dd0e033/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/9e4f9723-463b-4402-8cac-b64c5dd0e033", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c294" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/294", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c295", - "@type": "sc:Canvas", - "label": "291", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/882920bf-a423-4b49-bffa-13076479cbc2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/882920bf-a423-4b49-bffa-13076479cbc2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=295", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/882920bf-a423-4b49-bffa-13076479cbc2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/882920bf-a423-4b49-bffa-13076479cbc2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/882920bf-a423-4b49-bffa-13076479cbc2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c295" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/295", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c296", - "@type": "sc:Canvas", - "label": "292", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/95a77935-e239-4e05-986d-1cde5916de9a/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/95a77935-e239-4e05-986d-1cde5916de9a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=296", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/95a77935-e239-4e05-986d-1cde5916de9a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/95a77935-e239-4e05-986d-1cde5916de9a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/95a77935-e239-4e05-986d-1cde5916de9a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c296" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/296", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c297", - "@type": "sc:Canvas", - "label": "293", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/29762523-5e28-4064-9a33-8e61058a4116/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/29762523-5e28-4064-9a33-8e61058a4116", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=297", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/29762523-5e28-4064-9a33-8e61058a4116", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/29762523-5e28-4064-9a33-8e61058a4116/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/29762523-5e28-4064-9a33-8e61058a4116", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c297" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/297", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c298", - "@type": "sc:Canvas", - "label": "294", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/da8b6c32-fa73-4240-b148-eaebaa41e7cd/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/da8b6c32-fa73-4240-b148-eaebaa41e7cd", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=298", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/da8b6c32-fa73-4240-b148-eaebaa41e7cd", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/da8b6c32-fa73-4240-b148-eaebaa41e7cd/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/da8b6c32-fa73-4240-b148-eaebaa41e7cd", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c298" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/298", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c299", - "@type": "sc:Canvas", - "label": "295", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/47518576-fe0d-4a6b-a240-0e87f4434bfd/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/47518576-fe0d-4a6b-a240-0e87f4434bfd", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=299", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/47518576-fe0d-4a6b-a240-0e87f4434bfd", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/47518576-fe0d-4a6b-a240-0e87f4434bfd/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/47518576-fe0d-4a6b-a240-0e87f4434bfd", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c299" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/299", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c300", - "@type": "sc:Canvas", - "label": "296", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/35bec62a-b36e-4390-84c6-30cb80d9eb8e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/35bec62a-b36e-4390-84c6-30cb80d9eb8e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=300", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/35bec62a-b36e-4390-84c6-30cb80d9eb8e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/35bec62a-b36e-4390-84c6-30cb80d9eb8e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/35bec62a-b36e-4390-84c6-30cb80d9eb8e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c300" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/300", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c301", - "@type": "sc:Canvas", - "label": "297", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/8358ef81-c905-4af8-9405-f7b367b301c2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/8358ef81-c905-4af8-9405-f7b367b301c2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=301", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/8358ef81-c905-4af8-9405-f7b367b301c2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/8358ef81-c905-4af8-9405-f7b367b301c2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/8358ef81-c905-4af8-9405-f7b367b301c2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c301" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/301", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c302", - "@type": "sc:Canvas", - "label": "298", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5bc13831-9274-4d05-a4c3-1f6700a2f470/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5bc13831-9274-4d05-a4c3-1f6700a2f470", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=302", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5bc13831-9274-4d05-a4c3-1f6700a2f470", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5bc13831-9274-4d05-a4c3-1f6700a2f470/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5bc13831-9274-4d05-a4c3-1f6700a2f470", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c302" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/302", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c303", - "@type": "sc:Canvas", - "label": "299", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/220e788e-73b6-4e12-9930-112aaf488fe2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/220e788e-73b6-4e12-9930-112aaf488fe2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=303", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/220e788e-73b6-4e12-9930-112aaf488fe2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/220e788e-73b6-4e12-9930-112aaf488fe2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/220e788e-73b6-4e12-9930-112aaf488fe2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c303" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/303", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c304", - "@type": "sc:Canvas", - "label": "300", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/1596f999-724c-4203-a2eb-4fcf589b215c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/1596f999-724c-4203-a2eb-4fcf589b215c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=304", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/1596f999-724c-4203-a2eb-4fcf589b215c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/1596f999-724c-4203-a2eb-4fcf589b215c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/1596f999-724c-4203-a2eb-4fcf589b215c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c304" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/304", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c305", - "@type": "sc:Canvas", - "label": "301", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/31dba2d7-5b49-4bee-b062-28f30d52a13c/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/31dba2d7-5b49-4bee-b062-28f30d52a13c", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=305", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/31dba2d7-5b49-4bee-b062-28f30d52a13c", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/31dba2d7-5b49-4bee-b062-28f30d52a13c/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/31dba2d7-5b49-4bee-b062-28f30d52a13c", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c305" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/305", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c306", - "@type": "sc:Canvas", - "label": "302", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/4b44d880-13b9-404f-be5d-ea6c9a6e373e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/4b44d880-13b9-404f-be5d-ea6c9a6e373e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=306", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/4b44d880-13b9-404f-be5d-ea6c9a6e373e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/4b44d880-13b9-404f-be5d-ea6c9a6e373e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/4b44d880-13b9-404f-be5d-ea6c9a6e373e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c306" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/306", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c307", - "@type": "sc:Canvas", - "label": "303", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b1cea6e4-7b1d-49bb-8b0d-6486756a9736/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b1cea6e4-7b1d-49bb-8b0d-6486756a9736", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=307", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b1cea6e4-7b1d-49bb-8b0d-6486756a9736", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b1cea6e4-7b1d-49bb-8b0d-6486756a9736/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b1cea6e4-7b1d-49bb-8b0d-6486756a9736", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c307" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/307", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c308", - "@type": "sc:Canvas", - "label": "304", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/b75e43b8-8c20-46fc-8291-baf6e0396c06/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/b75e43b8-8c20-46fc-8291-baf6e0396c06", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=308", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/b75e43b8-8c20-46fc-8291-baf6e0396c06", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/b75e43b8-8c20-46fc-8291-baf6e0396c06/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/b75e43b8-8c20-46fc-8291-baf6e0396c06", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c308" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/308", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c309", - "@type": "sc:Canvas", - "label": "305", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5ed435cd-1d76-4883-b97a-2b622c2dd0e1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5ed435cd-1d76-4883-b97a-2b622c2dd0e1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=309", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5ed435cd-1d76-4883-b97a-2b622c2dd0e1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5ed435cd-1d76-4883-b97a-2b622c2dd0e1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5ed435cd-1d76-4883-b97a-2b622c2dd0e1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c309" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/309", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c310", - "@type": "sc:Canvas", - "label": "306", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/e74d6ba1-d030-4949-9398-f9fe70791fc1/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/e74d6ba1-d030-4949-9398-f9fe70791fc1", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=310", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/e74d6ba1-d030-4949-9398-f9fe70791fc1", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/e74d6ba1-d030-4949-9398-f9fe70791fc1/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/e74d6ba1-d030-4949-9398-f9fe70791fc1", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c310" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/310", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c311", - "@type": "sc:Canvas", - "label": "307", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/fb89d260-3c48-4fbd-8423-8465ebdef327/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/fb89d260-3c48-4fbd-8423-8465ebdef327", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=311", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/fb89d260-3c48-4fbd-8423-8465ebdef327", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/fb89d260-3c48-4fbd-8423-8465ebdef327/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/fb89d260-3c48-4fbd-8423-8465ebdef327", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c311" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/311", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c312", - "@type": "sc:Canvas", - "label": "308", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f0012e61-5a4b-4f27-8bd9-da2ab8cfaa67/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f0012e61-5a4b-4f27-8bd9-da2ab8cfaa67", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=312", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f0012e61-5a4b-4f27-8bd9-da2ab8cfaa67", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f0012e61-5a4b-4f27-8bd9-da2ab8cfaa67/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f0012e61-5a4b-4f27-8bd9-da2ab8cfaa67", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c312" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/312", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c313", - "@type": "sc:Canvas", - "label": "309", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/f2e67de3-f229-4354-9fb5-f28343cbc0cf/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/f2e67de3-f229-4354-9fb5-f28343cbc0cf", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=313", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/f2e67de3-f229-4354-9fb5-f28343cbc0cf", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/f2e67de3-f229-4354-9fb5-f28343cbc0cf/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/f2e67de3-f229-4354-9fb5-f28343cbc0cf", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c313" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/313", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c314", - "@type": "sc:Canvas", - "label": "310", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/a6a05105-7932-4474-b035-e4f6e6311f48/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/a6a05105-7932-4474-b035-e4f6e6311f48", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=314", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/a6a05105-7932-4474-b035-e4f6e6311f48", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/a6a05105-7932-4474-b035-e4f6e6311f48/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/a6a05105-7932-4474-b035-e4f6e6311f48", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c314" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/314", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c315", - "@type": "sc:Canvas", - "label": "311", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/61dc64ad-c9b7-4984-8584-492225ddd7ab/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/61dc64ad-c9b7-4984-8584-492225ddd7ab", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=315", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/61dc64ad-c9b7-4984-8584-492225ddd7ab", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/61dc64ad-c9b7-4984-8584-492225ddd7ab/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/61dc64ad-c9b7-4984-8584-492225ddd7ab", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c315" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/315", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c316", - "@type": "sc:Canvas", - "label": "312", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bdd70d25-0519-4c5c-9498-54dde197abc6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bdd70d25-0519-4c5c-9498-54dde197abc6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=316", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bdd70d25-0519-4c5c-9498-54dde197abc6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bdd70d25-0519-4c5c-9498-54dde197abc6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bdd70d25-0519-4c5c-9498-54dde197abc6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c316" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/316", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c317", - "@type": "sc:Canvas", - "label": "313", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5d9bbb64-bc7e-4940-8a58-e4e8e97807bb/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5d9bbb64-bc7e-4940-8a58-e4e8e97807bb", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=317", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5d9bbb64-bc7e-4940-8a58-e4e8e97807bb", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5d9bbb64-bc7e-4940-8a58-e4e8e97807bb/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5d9bbb64-bc7e-4940-8a58-e4e8e97807bb", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c317" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/317", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c318", - "@type": "sc:Canvas", - "label": "314", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/21d1fb72-1e1d-4f10-a603-a4c5385b292e/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/21d1fb72-1e1d-4f10-a603-a4c5385b292e", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=318", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/21d1fb72-1e1d-4f10-a603-a4c5385b292e", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/21d1fb72-1e1d-4f10-a603-a4c5385b292e/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/21d1fb72-1e1d-4f10-a603-a4c5385b292e", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c318" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/318", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c319", - "@type": "sc:Canvas", - "label": "315", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/3889400f-ade1-48bd-891f-b3d71f2f120d/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/3889400f-ade1-48bd-891f-b3d71f2f120d", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=319", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/3889400f-ade1-48bd-891f-b3d71f2f120d", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/3889400f-ade1-48bd-891f-b3d71f2f120d/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/3889400f-ade1-48bd-891f-b3d71f2f120d", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c319" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/319", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c320", - "@type": "sc:Canvas", - "label": "316", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/feb872fb-bcf6-4cc2-ab5d-c4642355b7f5/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/feb872fb-bcf6-4cc2-ab5d-c4642355b7f5", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=320", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/feb872fb-bcf6-4cc2-ab5d-c4642355b7f5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/feb872fb-bcf6-4cc2-ab5d-c4642355b7f5/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/feb872fb-bcf6-4cc2-ab5d-c4642355b7f5", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c320" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/320", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c321", - "@type": "sc:Canvas", - "label": "317", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/48d773db-243a-4472-8544-eeb9c2cd0d86/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/48d773db-243a-4472-8544-eeb9c2cd0d86", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=321", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/48d773db-243a-4472-8544-eeb9c2cd0d86", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/48d773db-243a-4472-8544-eeb9c2cd0d86/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/48d773db-243a-4472-8544-eeb9c2cd0d86", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c321" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/321", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c322", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/387f82c4-37d1-4870-b4bb-d528eaec9c78/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/387f82c4-37d1-4870-b4bb-d528eaec9c78", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=322", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/387f82c4-37d1-4870-b4bb-d528eaec9c78", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/387f82c4-37d1-4870-b4bb-d528eaec9c78/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/387f82c4-37d1-4870-b4bb-d528eaec9c78", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c322" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/322", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c323", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6c00a4fb-f757-4a35-9fcc-3dfe4647f68f/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6c00a4fb-f757-4a35-9fcc-3dfe4647f68f", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=323", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6c00a4fb-f757-4a35-9fcc-3dfe4647f68f", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6c00a4fb-f757-4a35-9fcc-3dfe4647f68f/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6c00a4fb-f757-4a35-9fcc-3dfe4647f68f", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c323" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/323", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c324", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/6bc5f9b7-27b2-431d-84d3-22b408af82c6/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/6bc5f9b7-27b2-431d-84d3-22b408af82c6", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=324", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/6bc5f9b7-27b2-431d-84d3-22b408af82c6", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/6bc5f9b7-27b2-431d-84d3-22b408af82c6/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/6bc5f9b7-27b2-431d-84d3-22b408af82c6", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c324" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/324", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c325", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/ed76a10b-bffd-450d-b7ea-cee8a38bb3c2/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/ed76a10b-bffd-450d-b7ea-cee8a38bb3c2", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 629, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 246, - "height": 400 - }, - { - "width": 629, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=325", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3188, - "width": 1959, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/ed76a10b-bffd-450d-b7ea-cee8a38bb3c2", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/ed76a10b-bffd-450d-b7ea-cee8a38bb3c2/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 629, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/ed76a10b-bffd-450d-b7ea-cee8a38bb3c2", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c325" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/325", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c326", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/54ba00a3-6161-4df3-8e95-636c158e9dac/full/61,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/54ba00a3-6161-4df3-8e95-636c158e9dac", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 628, - "sizes": [ - { - "width": 61, - "height": 100 - }, - { - "width": 123, - "height": 200 - }, - { - "width": 245, - "height": 400 - }, - { - "width": 628, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=326", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3189, - "width": 1957, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/54ba00a3-6161-4df3-8e95-636c158e9dac", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/54ba00a3-6161-4df3-8e95-636c158e9dac/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 628, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/54ba00a3-6161-4df3-8e95-636c158e9dac", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c326" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/326", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c327", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/5cb96489-a8e9-41b3-99d8-da5a945e1a0a/full/65,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/5cb96489-a8e9-41b3-99d8-da5a945e1a0a", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 669, - "sizes": [ - { - "width": 65, - "height": 100 - }, - { - "width": 131, - "height": 200 - }, - { - "width": 261, - "height": 400 - }, - { - "width": 669, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=327", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 3206, - "width": 2093, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/5cb96489-a8e9-41b3-99d8-da5a945e1a0a", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/5cb96489-a8e9-41b3-99d8-da5a945e1a0a/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 669, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/5cb96489-a8e9-41b3-99d8-da5a945e1a0a", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c327" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/327", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/canvas/c1", - "@type": "sc:Canvas", - "label": " - ", - "thumbnail": { - "@id": "https://dlcs.io/thumbs/wellcome/1/bc556d06-16f6-4525-b38c-e7203a9188c9/full/68,100/0/default.jpg", - "@type": "dctypes:Image", - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/thumbs/wellcome/1/bc556d06-16f6-4525-b38c-e7203a9188c9", - "protocol": "http://iiif.io/api/image", - "height": 1024, - "width": 695, - "sizes": [ - { - "width": 68, - "height": 100 - }, - { - "width": 136, - "height": 200 - }, - { - "width": 272, - "height": 400 - }, - { - "width": 695, - "height": 1024 - } - ], - "profile": [ - "http://iiif.io/api/image/2/level0.json" - ] - } - }, - "seeAlso": { - "@id": "http://wellcomelibrary.org/service/alto/b18035978/0?image=1", - "format": "text/xml", - "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", - "label": "METS-ALTO XML" - }, - "height": 4932, - "width": 3348, - "images": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/imageanno/bc556d06-16f6-4525-b38c-e7203a9188c9", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc556d06-16f6-4525-b38c-e7203a9188c9/full/!1024,1024/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 1024, - "width": 695, - "service": { - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://dlcs.io/iiif-img/wellcome/1/bc556d06-16f6-4525-b38c-e7203a9188c9", - "profile": "http://iiif.io/api/image/2/level1.json" - } - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c1" - } - ], - "otherContent": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/contentAsText/1", - "@type": "sc:AnnotationList", - "label": "Text of this page" - } - ] - } - ] - } - ], - "structures": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/range/r-0", - "@type": "sc:Range", - "label": "Front Cover", - "canvases": [ - "http://wellcomelibrary.org/iiif/b18035978/canvas/c0" - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/range/r-2", - "@type": "sc:Range", - "label": "Title Page", - "canvases": [ - "http://wellcomelibrary.org/iiif/b18035978/canvas/c7" - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/range/r-3", - "@type": "sc:Range", - "label": "Table of Contents", - "canvases": [ - "http://wellcomelibrary.org/iiif/b18035978/canvas/c9" - ] - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/range/r-1", - "@type": "sc:Range", - "label": "Back Cover", - "canvases": [ - "http://wellcomelibrary.org/iiif/b18035978/canvas/c1" - ] - } - ] -} diff --git a/spec/fixtures/searchManifest.noresults.json b/spec/fixtures/searchManifest.noresults.json deleted file mode 100644 index 656000b74875f793dab149080fd4820bc0369638..0000000000000000000000000000000000000000 --- a/spec/fixtures/searchManifest.noresults.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": "http://iiif.io/api/search/0/context.json", - "@id": "http://wellcomelibrary.org/annoservices/search/b18035978?q=blah", - "@type": "sc:AnnotationList", - "within": { - "@type": "sc:Layer", - "total": 0 - }, - "startIndex": 0, - "resources": [], - "hits": [] -} diff --git a/spec/fixtures/searchManifest.results.json b/spec/fixtures/searchManifest.results.json deleted file mode 100644 index 33aae03b6a29287c0f3ceceb1cff3a2296fe8278..0000000000000000000000000000000000000000 --- a/spec/fixtures/searchManifest.results.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "@context": "http://iiif.io/api/search/0/context.json", - "@id": "http://wellcomelibrary.org/annoservices/search/b18035978?q=figures", - "@type": "sc:AnnotationList", - "within": { - "@type": "sc:Layer", - "total": 11 - }, - "startIndex": 0, - "resources": [ - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a25h0r1220,2462,126,44", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c25#xywh=1220,2462,126,44" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a26h1r1495,375,150,58", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c26#xywh=1495,375,150,58" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a27h2r708,893,145,56", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c27#xywh=708,893,145,56" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a29h3r520,370,145,56", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c29#xywh=520,370,145,56" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a32h4r1424,1867,148,58", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c32#xywh=1424,1867,148,58" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a33h5r316,1061,127,44", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c33#xywh=316,1061,127,44" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a48h6r1100,631,160,58", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures," - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c48#xywh=1100,631,160,58" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a48h7r1321,2670,128,46", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c48#xywh=1321,2670,128,46" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a51h8r512,2025,146,57", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c51#xywh=512,2025,146,57" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a55h9r979,383,145,57", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c55#xywh=979,383,145,57" - }, - { - "@id": "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a56h10r1340,2244,128,45", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@type": "cnt:ContentAsText", - "chars": "figures" - }, - "on": "http://wellcomelibrary.org/iiif/b18035978/canvas/c56#xywh=1340,2244,128,45" - } - ], - "hits": [ - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a25h0r1220,2462,126,44" - ], - "match": "figures", - "before": "anted or unplanned.f *Griselda Rowntree to the International Congress on Mental Health, London, 1968, reported in The Times, August 13th, 1968. Other ", - "after": " given here come from the Family Plaruiing Association, or the Registrar General's Statistical Reviews. f E.g. A. C. Fraser and P. C. Watson, 'Family " - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a26h1r1495,375,150,58" - ], - "match": "figures", - "before": " just cited found that less than 20 per cent of women having babies in two city hospitals had ever received any expert contraceptive advice. National ", - "after": " confirm that this must be a general rule. The Family Planning Association estimate that of the ten million British women of child-bearing age, of who" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a27h2r708,893,145,56" - ], - "match": "figures", - "before": "to these overall patterns of 'open' birth-control, with their stench of failure and sexual frustration, there are the 'closed' methods enjoyed—as the ", - "after": " hint—by the few. These are the effective, sexually silent methods: medical abortion, sterihzation, LU.D.s, the diaphragm and oral contraceptives. I c" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a29h3r520,370,145,56" - ], - "match": "figures", - "before": "e (Longmans, London, 1965). 24 BIRTH-CONTROL cent), dislike of the results (21 per cent), or 'don't care' (20 per cent) as their reason. Surely, what ", - "after": " like these demand is that those who wish to reduce sexual 'immorality' should ask themselves just what they mean by it. Effective contraception has b" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a32h4r1424,1867,148,58" - ], - "match": "figures", - "before": "traceptive known—because it is the most effective method of preventing pregnancy and therefore the risks of childbirth. Look at the rather surprising ", - "after": " shown in Table 1.2, based on the best available data for the failure-rate and death risks of various contraceptives. Dr Malcolm Potts, Medical Secret" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a33h5r316,1061,127,44" - ], - "match": "figures", - "before": "000,000 women aged 20-34 use the method for a year: this is what happens After D. M. Potts, I.P.P.F. Medical Bulletin (October 1968). Note that these ", - "after": " are for Britain, with a low maternal mortality rate. Where death in childbirth is more likely the pill is relatively much safer, and unprotected sex " - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a48h6r1100,631,160,58", - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a48h7r1321,2670,128,46" - ], - "match": "figures, figures", - "before": "ortions as births; and in other Soviet bloc countries abortion rates vary between 250 to 600 per 1,000 live births. These seem like staggeringly high ", - "after": " such as that 12 per cent of urban women admit to at least one abortion. 44 BIRTH-CONTROL Uppsala, Sweden, tested such a drug—called F6103 —on fifty y" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a51h8r512,2025,146,57" - ], - "match": "figures", - "before": "y multiply forty times and the area they cover may increase a hundredfold to equal one-fifth of the entire land surface of the planet. Every year the ", - "after": " tell the same seemingly relentless story: while the world's ability to produce food and other essentials slowly rises, the amount each person gets sl" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a55h9r979,383,145,57" - ], - "match": "figures", - "before": "te effects. Most predictions, therefore, are based on constantly revised estimates of what has been happening, and can give only hazy upper and lower ", - "after": " for future population size, not which figure is most likely. Some of these estimates are pure guesswork. For example, the official population forecas" - }, - { - "@type": "search:Hit", - "annotations": [ - "http://wellcomelibrary.org/iiif/b18035978/annos/searchResults/a56h10r1340,2244,128,45" - ], - "match": "figures", - "before": " was due to imder- estimates by couples who thought they were more subfertile than they actually were. When these are excluded the 'expect' and 'had' ", - "after": " were -91 and -92 respectively. If short-tenn predictions can be so accurate, hope for long-term forecasts rises. In fact the G.A.F. projections of Am" - } - ] -} diff --git a/spec/fixtures/simpleStructuresFixtureV1.json b/spec/fixtures/simpleStructuresFixtureV1.json deleted file mode 100644 index 1d552119b2a845fe5369cc9cfa51761fa9b7d83d..0000000000000000000000000000000000000000 --- a/spec/fixtures/simpleStructuresFixtureV1.json +++ /dev/null @@ -1,21 +0,0 @@ -{"structures": [ - { - "@id": "http://www.example.org/iiif/book1/range/r1.json", - "@type": "sc:Range", - "label": "Introduction", - "canvases": [ - "http://www.example.org/iiif/book1/canvas/p1.json" - ] - }, - { - "@id": "http://www.example.org/iiif/book1/range/r2.json", - "@type": "sc:Range", - "label": "Part 1", - "within": "http://www.example.org/iiif/book1/range/r1.json", - "canvases": [ - "http://www.example.org/iiif/book1/canvas/p2.json", - "http://www.example.org/iiif/book1/canvas/p3.json#xywh=0,0,750,300" - ] - } - ] -} diff --git a/spec/fixtures/simpleStructuresFixtureV2.json b/spec/fixtures/simpleStructuresFixtureV2.json deleted file mode 100644 index ac963677c93f7694ac46eae0d88149552b5fbf01..0000000000000000000000000000000000000000 --- a/spec/fixtures/simpleStructuresFixtureV2.json +++ /dev/null @@ -1,22 +0,0 @@ -{"structures": [ - { - "@id": "http://www.example.org/iiif/book1/range/r1.json", - "@type":"sc:Range", - "label":"Introduction", - "ranges": [ - "http://www.example.org/iiif/book1/range/r2.json" - ], - "canvases": [ - "http://www.example.org/iiif/book1/canvas/p1.json" - ] - }, - { - "@id": "http://www.example.org/iiif/book1/range/r2.json", - "@type":"sc:Range", - "label":"Part 1", - "canvases": [ - "http://www.example.org/iiif/book1/canvas/p2.json", - "http://www.example.org/iiif/book1/canvas/p3.json#xywh=0,0,750,300" - ] - } -]} diff --git a/spec/fixtures/simpleStructuresFixtureV21.json b/spec/fixtures/simpleStructuresFixtureV21.json deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/spec/javascripts/fixtures/mirador.html b/spec/javascripts/fixtures/mirador.html deleted file mode 100644 index cecdcf6c594a8c2846ecf7b1495bea6e2d8a962b..0000000000000000000000000000000000000000 --- a/spec/javascripts/fixtures/mirador.html +++ /dev/null @@ -1,16 +0,0 @@ -<div id="viewer"></div> - -<script type="text/javascript"> - $(function() { - Mirador({ - id: 'viewer', - data: [{ - "manifestUri": "spec/data/Walters/bd183mz0176/manifest.json", - "location": "Stanford University", - "title": "MS 5", - "widgets": [] - }] - }); - }); -</script - diff --git a/spec/manifests/collection.test.js b/spec/manifests/collection.test.js deleted file mode 100644 index a548300f38e86b923e45dfa642ac5bfddc81522a..0000000000000000000000000000000000000000 --- a/spec/manifests/collection.test.js +++ /dev/null @@ -1,540 +0,0 @@ -describe('Collection', function() { - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.collectionData = getJSONFixture('iiif-universe.json'); - this.server = sinon.fakeServer.create(); - }); - - afterEach(function() { - this.server.restore(); - }); - - describe('init', function () { - it('should have expected data constructed from collection content', function(done) { - var content = { "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Collection", - "@id": "http://collections.example.com/iiif/EX/collection", - "label": "Book 1", - "manifests": [] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - setTimeout(function () { - expect(collectionInstance.jsonLd.label).toEqual('Book 1'); - done(); - }, 0); - }); - it('should have expected data constructed from collection URI', function(done) { - var collectionUri = 'path/to/collection.json'; - var data = this.collectionData; - - this.server.respondWith("GET", "path/to/collection.json", - [ 200, - { "Content-Type": "application/json" }, - JSON.stringify(data) - ] - ); - var collectionInstance = new Mirador.Collection(collectionUri); - this.server.respond(); - - expect(collectionInstance.jsonLd).toEqual(data); - done(); - }); - }); - - describe('getVersion for collection', function() { - it('should return the correct values for different versions of the collection', function() { - var content = { "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Collection", - "@id": "http://collections.example.com/iiif/EX/collection", - "label": "Book 1", - "manifests": [] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getVersion()).toEqual('1'); - - content = { "@context": "http://iiif.io/api/presentation/1/context.json", - "@type": "sc:Collection", - "@id": "http://collections.example.com/iiif/EX/collection", - "label": "Book 1", - "manifests": [] - }; - collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getVersion()).toEqual('1'); - content = { "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "sc:Collection", - "@id": "http://collections.example.com/iiif/EX/collection", - "label": "Book 1", - "manifests": [] - }; - collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getVersion()).toEqual('2'); - - content = { "@context": "http://iiif.io/api/presentation/2.1/context.json", - "@type": "sc:Collection", - "@id": "http://collections.example.com/iiif/EX/collection", - "label": "Book 1", - "manifests": [] - }; - collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getVersion()).toEqual('2.1'); - }); - }); - - describe('getManifestUris for collection', function() { - it('should return manifest URIs for a collection with a \"manifests\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ], - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestUris()).toEqual([ - "http://example.org/iiif/book1/manifest", - "http://example.org/iiif/book2/manifest" - ]); - }); - it('should return manifest URIs for a collection with a \"members\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestUris()).toEqual([ - "http://example.org/iiif/book1/manifest", - "http://example.org/iiif/book2/manifest" - ]); - }); - it('should return empty array for a collection without either key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestUris()).toEqual([]); - }); - it('should return empty array for a collection with a \"members\" key but no manifests in it', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestUris()).toEqual([]); - }); - }); - - describe('getManifestBlocks for collection', function() { - it('should return manifest blocks for a collection with a \"manifests\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ], - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestBlocks()).toEqual([ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ]); - }); - it('should return manifest blocks for a collection with a \"members\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestBlocks()).toEqual([ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ]); - }); - it('should return empty array for a collection without either key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestBlocks()).toEqual([]); - }); - it('should return empty array for a collection with a \"members\" key but no manifests in it', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getManifestBlocks()).toEqual([]); - }); - }); - - describe('getCollectionUris for collection', function() { - it('should return collection URIs for a collection with a \"collections\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - } - ], - "collections": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionUris()).toEqual([ - "http://example.org/iiif/collection/part1", - "http://example.org/iiif/collection/part2" - ]); - }); - it('should return collection URIs for a collection with a \"members\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionUris()).toEqual([ - "http://example.org/iiif/collection/part1", - "http://example.org/iiif/collection/part2" - ]); - }); - it('should return empty array for a collection without either key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionUris()).toEqual([]); - }); - it('should return empty array for a collection with a \"members\" key but no manifests in it', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionUris()).toEqual([]); - }); - }); - - describe('getCollectionBlocks for collection', function() { - it('should return collection URIs for a collection with a \"collections\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - } - ], - "collections": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionBlocks()).toEqual([ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ]); - }); - it('should return collection URIs for a collection with a \"members\" key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionBlocks()).toEqual([ - { - "@id": "http://example.org/iiif/collection/part1", - "@type": "sc:Collection", - "label": "Sub Collection 1" - }, - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ]); - }); - it('should return empty array for a collection without either key', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionBlocks()).toEqual([]); - }); - it('should return empty array for a collection with a \"members\" key but no manifests in it', function() { - var content = { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "members": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ] - }; - var collectionInstance = new Mirador.Collection(null, null, content); - expect(collectionInstance.getCollectionBlocks()).toEqual([]); - }); - }); -}); \ No newline at end of file diff --git a/spec/manifests/manifest.test.js b/spec/manifests/manifest.test.js deleted file mode 100644 index 9c39ac7590e2c022215cb7d43f7a79458d7991f3..0000000000000000000000000000000000000000 --- a/spec/manifests/manifest.test.js +++ /dev/null @@ -1,377 +0,0 @@ -describe('Manifest', function() { - beforeEach(function() { - this.server = sinon.fakeServer.create(); - }); - - afterEach(function() { - this.server.restore(); - }); - - describe('init', function () { - it('should have expected data constructed from manifest content', function(done) { - var content = { "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{}] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - - setTimeout(function () { - expect(manifestInstance.jsonLd.label).toEqual('Book 1'); - done(); - }, 0); - }); - - it('should have expected data constructed from info.json', function(done) { - var uri = 'http://example.com/iiif/book1/info.json'; - var data = { - height:4737, - width: 3152, - '@context': 'http://library.stanford.edu/iiif/image-api/1.1/context.json', - '@id': 'http://example.com/iiif/image1', - formats: ['jpg', 'png'], - profile: 'http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2' - }; - this.server.respondWith('GET', uri, - [ 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(data) - ] - ); - var manifestInstance = new Mirador.Manifest(uri); - this.server.respond(); - - var jsonLd = manifestInstance.jsonLd; - var canvas = jsonLd.sequences[0].canvases[0]; - var image = canvas.images[0]; - - // Attributes passed from info.json - - expect(canvas.height).toEqual(4737); - expect(canvas.width).toEqual(3152); - expect(image.resource.height).toEqual(4737); - expect(image.resource.width).toEqual(3152); - expect(image.resource.service['@id']).toEqual(data['@id']); - expect(image.resource.service['@context']).toEqual(data['@context']); - expect(image.resource.service.profile).toEqual(data.profile); - - // Attributes built by Manifest code. - expect(jsonLd['@type']).toEqual('sc:Manifest'); - done(); - }); - - it('should have expected data constructed from manifest URI', function(done) { - var manifestUri = 'path/to/manifest.json'; - var data = {manifest : "here"}; - - this.server.respondWith("GET", "path/to/manifest.json", - [ 200, - { "Content-Type": "application/json" }, - JSON.stringify(data) - ] - ); - var manifestInstance = new Mirador.Manifest(manifestUri); - this.server.respond(); - - expect(manifestInstance.jsonLd).toEqual(data); - done(); - }); - - describe('getVersion for manifest', function() { - it('should return the correct values for different versions of the manifest', function() { - var content = { "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{}] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - expect(manifestInstance.getVersion()).toEqual('1'); - - content = { "@context": "http://iiif.io/api/presentation/1/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{}] - }; - manifestInstance = new Mirador.Manifest(null, null, content); - expect(manifestInstance.getVersion()).toEqual('1'); - content = { "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{}] - }; - manifestInstance = new Mirador.Manifest(null, null, content); - expect(manifestInstance.getVersion()).toEqual('2'); - - content = { "@context": "http://iiif.io/api/presentation/2.1/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{}] - }; - manifestInstance = new Mirador.Manifest(null, null, content); - expect(manifestInstance.getVersion()).toEqual('2.1'); - }); - }); - describe('getThumbnailForCanvas', function () { - - it('when canvas.thumbnail is a string', function () { - var thumbnailUrl = 'http://www.example.org/iiif/book1/thumbnail/p1.jpg'; - var canvas = { - thumbnail: thumbnailUrl - }; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas); - expect(thumbnail).toEqual(thumbnailUrl); - }); - - it('when canvas.thumbnail is an object without service', function () { - var thumbnailUrl = 'http://www.example.org/iiif/book1/thumbnail/p1.jpg'; - var canvas = { - thumbnail: { - '@id': thumbnailUrl - } - }; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas); - expect(thumbnail).toEqual(thumbnailUrl); - }); - - - it('when canvas.thumbnail has a level 0 service', function () { - var thumbnailUrl = 'http://www.example.org/iiif/book1/thumbnail/p1.jpg'; - var canvas = { - thumbnail: { - '@id': thumbnailUrl, - service: { - '@id': 'http://example.org/images/book1-page1', - profile: 'http://iiif.io/api/image/2/level0.json' - } - } - }; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas); - expect(thumbnail).toEqual(thumbnailUrl); - }); - - - it('when canvas.thumbnail has a level 1 or level 2 service', function () { - var canvas = { - thumbnail: { - '@id': 'http://example.org/images/book1-page1/full/80,100/0/default.jpg', - service: { - '@id': 'http://example.org/images/book1-page1', - profile: 'http://iiif.io/api/image/2/level1.json' - } - } - }; - - // Version 1 - canvas.thumbnail.service['@context'] = 'http://iiif.io/api/image/1/context.json'; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 128); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/128,/0/native.jpg'); - - // Version 2 - canvas.thumbnail.service['@context'] = 'http://iiif.io/api/image/2/context.json'; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 126); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/126,/0/default.jpg'); - - // No @context - delete canvas.thumbnail.service['@context']; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 128); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/128,/0/native.jpg'); - }); - - }); - - it('when canvas has no thumbnail', function () { - var canvas = { - images: [ - { - resource: { - service: { - '@context': 'http://iiif.io/api/image/2/context.json', - '@id': 'http://example.org/images/book1-page1' - } - } - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 124); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/124,/0/default.jpg'); - - // No @context - delete canvas.images[0].resource.service['@context']; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 124); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/124,/0/native.jpg'); - }); - - it('when canvas has no thumbnail and the image resource has a default', function () { - var canvas = { - images: [ - { - resource: { - default: { - service: { - '@context': 'http://iiif.io/api/image/2/context.json', - '@id': 'http://example.org/images/book1-page1' - } - } - } - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, {}); - var thumbnail = manifestInstance.getThumbnailForCanvas(canvas, 122); - expect(thumbnail).toEqual('http://example.org/images/book1-page1/full/122,/0/default.jpg'); - }); - - }); - - describe('getCanvases', function () { - it('should return correct canvases', function (done) { - var content = { - sequences: [ - { - canvases: [ - { - '@id': 'http://example.org/iiif/book1/canvas/p1' - } - ] - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - - setTimeout(function () { - expect(manifestInstance.getCanvases()[0]['@id']).toEqual('http://example.org/iiif/book1/canvas/p1'); - done(); - }, 0); - }); - }); - - describe('getAnnotationsListUrls', function () { - it('assuming otherContent has two annotation lists', function (done) { - var canvasId = 'http://example.org/iiif/book1/canvas/p1'; - var listId1 = 'http://example.org/iiif/book1/canvas/p1/list/l1'; - var listId2 = 'http://example.org/iiif/book1/canvas/p1/list/l2'; - var content = { - sequences: [ - { - canvases: [ - { - '@id': canvasId, - otherContent: [ - { - "@id": listId1, - "@type": "sc:AnnotationList" - }, - { - "@id": listId2, - "@type": "sc:AnnotationList" - } - ] - } - ] - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - setTimeout(function () { - var annotationListUrl = manifestInstance.getAnnotationsListUrls(canvasId); - expect(annotationListUrl).toEqual([listId1, listId2]); - done(); - }, 0); - }); - - it('when canvas does not have otherContent', function (done) { - var canvasId = 'http://example.org/iiif/book1/canvas/p1'; - var content = { - sequences: [ - { - canvases: [ - { - '@id': canvasId, - } - ] - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - setTimeout(function () { - var annotationListUrl = manifestInstance.getAnnotationsListUrls(canvasId); - expect(annotationListUrl.length).toEqual(0); - done(); - }, 0); - }); - }); - - describe('getStructures', function () { - it('should retrieve correct structures', function (done) { - var rangeId = 'http://example.org/iiif/book1/range/r1'; - var content = { - structures: [ - { - '@id': rangeId - } - ] - }; - var manifestInstance = new Mirador.Manifest(null, null, content); - setTimeout(function () { - var structures = manifestInstance.getStructures(); - expect(structures.length).toEqual(1); - done(); - }, 0); - }); - }); - - describe('getViewingDirection', function () { - it('should retrieve correct viewingDirection', function (done) { - var content1 = { - "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "viewingDirection": "right-to-left", - "sequences": [{}] - }; - var content2 = { - "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "sequences": [{ - "viewingDirection": 'right-to-left' - }] - }; - var content3 = { - "@context": "http://www.shared-canvas.org/ns/context.json", - "@type": "sc:Manifest", - "@id": "http://manifests.example.com/iiif/EX/manifest", - "label": "Book 1", - "viewingDirection": "left-to-right", - "sequences": [{}] - }; - var manifestInstance1 = new Mirador.Manifest(null, null, content1); - var manifestInstance2 = new Mirador.Manifest(null, null, content2); - var manifestInstance3 = new Mirador.Manifest(null, null, content3); - setTimeout(function () { - var viewingDirection1 = manifestInstance1.getViewingDirection(); - var viewingDirection2 = manifestInstance2.getViewingDirection(); - var viewingDirection3 = manifestInstance3.getViewingDirection(); - expect(viewingDirection1).toEqual('right-to-left'); - expect(viewingDirection2).toEqual('right-to-left'); - expect(viewingDirection3).toEqual('left-to-right'); - done(); - }, 0); - }); - }); -}); diff --git a/spec/mirador.test.js b/spec/mirador.test.js deleted file mode 100644 index 8c62ad78ebc68e9ed690b034bfb51f9738df125c..0000000000000000000000000000000000000000 --- a/spec/mirador.test.js +++ /dev/null @@ -1,102 +0,0 @@ -describe('Mirador | mirador.js', function() { - function startMirador(done, testContext) { - localStorage.clear(); - var manifestLoadedCount = 0; - - testContext.viewerDiv = jQuery('<div/>'); - testContext.viewerDiv.attr('id', 'viewer'); - testContext.viewerDiv.appendTo('body'); - - testContext.mirador = Mirador({ - id: 'viewer', - layout: "1x2", - buildPath: 'spec/', - preserveManifestOrder: true, - data: [{ - "manifestUri": "spec/data/manifest.json", - "location": "Stanford University", - "title": "MS 5" - }, { - "manifestUri": "spec/data/manifest2.json", - "location": "Stanford University", - "title": "Walters" - }], - language: "de" - }); - - testContext.mirador.viewer.eventEmitter.subscribe('manifestListItemRendered', function(data) { - manifestLoadedCount++; - if (manifestLoadedCount === 2) { - done(); - } - return; - }); - } - - // Tests for object initialization - describe('Initialization', function() { - beforeAll(function(done) { - startMirador(done, this); - }); - afterAll(function() { - jQuery(window).unbind('resize'); - d3.select(window).on('resize', null); - this.viewerDiv.remove(); - delete this.mirador; - }); - - it('should apply the correct class to the container', function() { - expect(jQuery('#viewer').hasClass('mirador-container')).toBe(true); - }); - - it('should render manifest list items', function() { - console.log(this.mirador.viewer.manifestsPanel.manifestListItems.length) - expect(this.mirador.viewer.manifestsPanel.manifestListItems.length).toBe(2); - }); - - it('should start Mirador as blank workspace', function() { - expect(this.mirador.viewer).toBeDefined(); - }); - - it('should set the configured language', function(){ - expect(i18next.language).toBe('de') - }); - - it('should select a manifest', function() { - expect(this.viewerDiv.find('.addItemLink').first()).toExist(); - this.viewerDiv.find('.addItemLink').first().click(); - this.viewerDiv.find('.select-metadata').first().click(); - expect(this.mirador.viewer.workspace.windows[0].manifest.uri).toBe('spec/data/manifest.json'); - }); - - xit('should open page from thumbnail view', function() { - expect(this.viewerDiv.find('.window').first()).toExist(); - expect(this.viewerDiv.find('.thumbnail-view .thumbnail-image.highlight').first()).toExist(); - var _this = this, - eventId = 'currentCanvasIDUpdated.' + this.mirador.viewer.workspace.windows[0].id; - this.mirador.viewer.eventEmitter.subscribe(eventId, function(event, data) { - expect(_this.viewerDiv.find('.image-view').first()).toBeVisible(); - expect(_this.viewerDiv.find('.thumbnail-view').first()).toBeHidden(); - }); - this.viewerDiv.find('.thumbnail-view .thumbnail-image.highlight').first().click(); - }); - - it('should replace the window', function() { - expect(this.viewerDiv.find('.new-object-option').first()).toExist(); - this.viewerDiv.find('.new-object-option').first().click(); - this.viewerDiv.find('.select-metadata').eq(1).click(); - expect(this.mirador.viewer.workspace.windows[0].manifest.uri).not.toEqual('spec/data/manifest.json'); - }); - - it('should show logo specified in manifest', function(){ - expect(this.viewerDiv.find(".repo-image>img")[0].getAttribute("src")) - .toEqual("https://stacks-test.stanford.edu/image/iiif/ck546xs5106%2Folemiss1/full/300,/0/default.jpg"); - }); - - xit('should change the page on clicking next button', function() { - this.viewerDiv.find('.thumbnail-view .thumbnail-image.highlight').first().click(); - expect(this.viewerDiv.find('.mirador-osd-next').first()).toExist(); - this.viewerDiv.find('.mirador-osd-next').first().click(); - }); - }); -}); diff --git a/spec/utils/dialog-builder.test.js b/spec/utils/dialog-builder.test.js deleted file mode 100644 index 81f8a90f19ec1f17b69f2403f088fed588725697..0000000000000000000000000000000000000000 --- a/spec/utils/dialog-builder.test.js +++ /dev/null @@ -1,38 +0,0 @@ -describe('Dialog Builder', function () { - - beforeEach(function () { - // stub bootbox.js ( DialogBuilder is wrapper) - bootbox = jasmine.createSpy(); - var self = this; - self.initSpy = jasmine.createSpyObj('initSpy', ['init']); - bootbox.confirm = jasmine.createSpy('confirm').and.returnValue(self.initSpy); - - bootbox.dialog = jasmine.createSpy().and.returnValue(self.initSpy); - - bootbox.setDefaults = jasmine.createSpy(); - - this.dialogBuilder = new Mirador.DialogBuilder(); - }); - - it('should call setDefaults', function () { - expect(bootbox.setDefaults).toHaveBeenCalled(); - }); - - it('should call underlying confirm method', function () { - var onConfirm = function () { - }; - this.initSpy.init.calls.reset(); - this.dialogBuilder.confirm('msg', onConfirm); - expect(bootbox.confirm).toHaveBeenCalledWith('msg', onConfirm); - expect(this.initSpy.init).toHaveBeenCalled(); - }); - - it('should call underlying dialog method', function () { - var opts = {}; - this.initSpy.init.calls.reset(); - this.dialogBuilder.dialog(opts); - expect(bootbox.dialog).toHaveBeenCalledWith(opts); - expect(this.initSpy.init).toHaveBeenCalled(); - }) - -}); diff --git a/spec/utils/eventemitter.test.js b/spec/utils/eventemitter.test.js deleted file mode 100644 index 230e5757ee84439cfb63d087a2b0cd1ce5da737b..0000000000000000000000000000000000000000 --- a/spec/utils/eventemitter.test.js +++ /dev/null @@ -1,117 +0,0 @@ -describe('EventEmitter', function () { - - beforeEach(function() { - Mirador.EventEmitter.id = 0; - }); - - it('should initialize itself', function() { - var em = new Mirador.EventEmitter(); - expect(em).toBeTruthy(); - }); - - it('should have an identity andpublish, subscribe, and unsubscribe methods', function() { - var em = new Mirador.EventEmitter(); - expect(typeof em.emitterId).toBe("number"); - expect(em.emitterId > 0).toBeTruthy(); - expect(em.publish).toBeTruthy(); - expect(em.subscribe).toBeTruthy(); - expect(em.unsubscribe).toBeTruthy(); - }); - - it('should generate a unique id for each instance', function() { - var em1 = new Mirador.EventEmitter(); - var em2 = new Mirador.EventEmitter(); - var em3 = new Mirador.EventEmitter(); - expect(em1.emitterId > 0).toBeTruthy(); - expect(em1.emitterId < em2.emitterId).toBeTruthy(); - expect(em2.emitterId < em3.emitterId).toBeTruthy(); - }); - - it('should be able to publish and subscribe/unsubscribe to an event', function() { - var em = new Mirador.EventEmitter(); - var obj = {callback: function() {}}; - var eventName = "some_mirador_test_event"; - - spyOn(obj, 'callback'); - - em.subscribe(eventName, obj.callback); - em.publish(eventName); - expect(obj.callback).toHaveBeenCalled(); - - obj.callback.calls.reset(); - - em.unsubscribe(eventName, obj.callback); - em.publish(eventName); - expect(obj.callback).not.toHaveBeenCalled(); - }); - - it('should publish events with the unique ID', function() { - var em = new Mirador.EventEmitter(); - var prefix = em.emitterId.toString() + "::"; - var eventName = 'foo'; - var obj = {callback:function() {}}; - - spyOn(jQuery, 'subscribe'); - spyOn(jQuery, 'unsubscribe'); - spyOn(jQuery, 'publish'); - - em.publish(eventName); - expect(jQuery.publish).toHaveBeenCalledWith(prefix + eventName); - - em.subscribe(eventName, obj.callback); - expect(jQuery.subscribe).toHaveBeenCalledWith(prefix + eventName, obj.callback); - - em.unsubscribe(eventName, obj.callback); - expect(jQuery.unsubscribe).toHaveBeenCalledWith(prefix + eventName, obj.callback); - }); - - it('should log events when debug mode is enabled', function() { - var em = new Mirador.EventEmitter({debug: true}); - var eventName = "foo"; - spyOn(console, 'log'); - em.publish(eventName); - expect(console.log).toHaveBeenCalled(); - }); - - it('should recognize trace option when logging events', function() { - var em = new Mirador.EventEmitter({debug: true, trace: true}); - spyOn(console, 'trace'); - em.publish('foo'); - expect(console.trace).toHaveBeenCalled(); - }); - - it('should recognize exclude patterns when logging events', function() { - var em = new Mirador.EventEmitter({debug: true, - debugExclude: ['hello'] - }); - spyOn(console, 'log'); - em.publish('hello_world'); - expect(console.log).not.toHaveBeenCalled(); - em.publish('goodbye_world'); - expect(console.log).toHaveBeenCalled(); - }); - - it('should log when subscribed handlers are called in debug mode', function() { - var em = new Mirador.EventEmitter({debug: true}); - var handler = jasmine.createSpy('spy'); - spyOn(console, 'log'); - em.subscribe('foo', handler); - expect(console.log.calls.count()).toEqual(1); // trace from subscribe - em.publish('foo'); - expect(console.log.calls.count()).toEqual(3); // trace from publish and handler - expect(handler).toHaveBeenCalled(); - }); - - it('should unsubscribe correctly when in debug mode', function() { - var em = new Mirador.EventEmitter({debug: true}); - var handler = jasmine.createSpy('spy'); - spyOn(console, 'log'); - em.subscribe('foo', handler); - em.publish('foo'); - expect(handler).toHaveBeenCalled(); - handler.calls.reset(); - em.unsubscribe('foo', handler); - em.publish('foo'); - expect(handler).not.toHaveBeenCalled(); - }); -}); \ No newline at end of file diff --git a/spec/utils/handlebars.test.js b/spec/utils/handlebars.test.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/spec/utils/iiif.test.js b/spec/utils/iiif.test.js deleted file mode 100644 index ee8760c289fbd4f2a81afdb26368bb5ee81af43d..0000000000000000000000000000000000000000 --- a/spec/utils/iiif.test.js +++ /dev/null @@ -1,136 +0,0 @@ -describe('Iiif', function () { - describe('getImageUrl', function() { - it('should return default id for image entries without a service', function() { - var sample = { - "@id": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/canvas/canvas-5", - "@type": "sc:Canvas", - "label": "page de garde recto", - "height": "4785", - "width": "3760", - "images": [ - { - "@id": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/imageanno/anno-5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://stacks.stanford.edu/image/jr903ng8662/T0000005", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": "4785", - "width": "3760", - "default": { - "service": { - "@id": "https://stacks.stanford.edu/image/iiif/jr903ng8662%252FT0000005", - "@context": "http://iiif.io/api/image/2/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1" - } - } - }, - "on": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/canvas/canvas-5" - } - ] - }; - expect(Mirador.Iiif.getImageUrl(sample)).toEqual("https://stacks.stanford.edu/image/iiif/jr903ng8662%252FT0000005"); - }); - - it('should return IIIF root for image entries with a service', function() { - var sample = { - "@id": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/canvas/canvas-5", - "@type": "sc:Canvas", - "label": "page de garde recto", - "height": "4785", - "width": "3760", - "images": [ - { - "@id": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/imageanno/anno-5", - "@type": "oa:Annotation", - "motivation": "sc:painting", - "resource": { - "@id": "http://stacks.stanford.edu/image/jr903ng8662/T0000005", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": "4785", - "width": "3760", - "service": { - "@id": "https://stacks.stanford.edu/image/iiif/jr903ng8662%252FT0000005", - "@context": "http://iiif.io/api/image/2/context.json", - "profile": "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1" - } - }, - "on": "http://dms-data.stanford.edu/data/manifests/BnF/jr903ng8662/canvas/canvas-5" - } - ] - }; - expect(Mirador.Iiif.getImageUrl(sample)).toEqual("https://stacks.stanford.edu/image/iiif/jr903ng8662%252FT0000005"); - }); - }); - - describe('getVersionFromContext', function () { - it('should handle array contexts', function() { - var context = ['http://iiif.io/api/image/2/context.json', - {'someField': 'ns:some-field'}]; - expect(Mirador.Iiif.getVersionFromContext(context)).toEqual('2.0'); - }); - it('should identify 2.0', function() { - var context = 'http://iiif.io/api/image/2/context.json'; - expect(Mirador.Iiif.getVersionFromContext(context)).toEqual('2.0'); - }); - it('should identify 1.1', function() { - var context = 'http://iiif.io/api/image/1/context.json'; - expect(Mirador.Iiif.getVersionFromContext(context)).toEqual('1.1'); - }); - }); - - describe('getComplianceLevelFromProfile', function () { - it('should identify 0 from string', function() { - var profile = 'http://iiif.io/api/image/2/level0.json'; - expect(Mirador.Iiif.getComplianceLevelFromProfile(profile)).toEqual(0); - }); - it('should identify 2 from array', function() { - var profile = [ - "http://iiif.io/api/image/2/level2.json", - { - "formats" : [ "gif", "pdf" ], - "qualities" : [ "color", "gray" ], - "supports" : [ - "canonicalLinkHeader", "rotationArbitrary", "profileLinkHeader", "http://example.com/feature/" - ] - } - ]; - expect(Mirador.Iiif.getComplianceLevelFromProfile(profile)).toEqual(2); - }); - it('should return -1 for empty profile', function() { - var profile = null; - expect(Mirador.Iiif.getComplianceLevelFromProfile(profile)).toEqual(-1); - }); - it('should return -1 for unrecognised profile', function() { - var profile = "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0"; - expect(Mirador.Iiif.getComplianceLevelFromProfile(profile)).toEqual(-1); - }); - }); - - - describe('makeUriWithWidth', function () { - it('should return native.jpg URL for IIIF v1.x', function() { - expect(Mirador.Iiif.makeUriWithWidth('http://images.waahoo.com/iiif/MYTEST', 512, '1.1')).toEqual('http://images.waahoo.com/iiif/MYTEST/full/512,/0/native.jpg'); - }); - it('should return native.jpg URL for IIIF v2.x', function() { - expect(Mirador.Iiif.makeUriWithWidth('http://images.waahoo.com/iiif/MYTEST', 512, '2.0')).toEqual('http://images.waahoo.com/iiif/MYTEST/full/512,/0/default.jpg'); - }); - }); - - describe('getImageHostUrl', function () { - it('should return image_host if it exists', function() { - expect(Mirador.Iiif.getImageHostUrl({ image_host: "http://0.0.0.0/abc" })).toEqual("http://0.0.0.0/abc"); - }); - it('should return identifier portion if it exists', function() { - expect(Mirador.Iiif.getImageHostUrl({ '@id': "http://0.0.0.0/abc/def", identifier: "def" })).toEqual("http://0.0.0.0/abc"); - }); - it('should split URL in half if found', function() { - expect(Mirador.Iiif.getImageHostUrl({'@id': "http://0.0.0.0/abc/def"})).toEqual("http://0.0.0.0/abc"); - }); - it('should return empty string if all attempts fail', function() { - expect(Mirador.Iiif.getImageHostUrl({})).toEqual(''); - }); - }); -}); diff --git a/spec/utils/jsonBlobApi.test.js b/spec/utils/jsonBlobApi.test.js deleted file mode 100644 index 8c3e68f690767ee1d8fd9e3f483330cfed06b3d5..0000000000000000000000000000000000000000 --- a/spec/utils/jsonBlobApi.test.js +++ /dev/null @@ -1,120 +0,0 @@ -describe('JsonBlobApi', function () { - var subject; - beforeEach(function() { - this.jsonBlobEndpoint = new Mirador.JSONBlobAPI({ - 'ssl': true, - 'port': '443', - 'host': 'jsonblob.com' - }); - subject = this.jsonBlobEndpoint; - }); - - describe('Initialization', function() { - it('should initialize properly under defaults', function() { - expect(true).toBe(true); //Force beforeEach() to run - }); - }); - - describe('readSync', function () { - var dummyData; - beforeEach(function() { - dummyData = JSON.stringify({ saveState: "dummy" }); - spyOn(jQuery, 'ajax').and.callFake(function(settings) { - settings.success(dummyData, 'success', null); - }); - }); - it('should grab the correct blob in HTTPS', function() { - expect(subject.readSync('dummyBlobId')).toEqual(dummyData); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - type: 'GET', - url: 'https://jsonblob.com:443/api/jsonBlob/dummyBlobId', - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - async: false, - processData: false - })); - }); - it('should grab the correct blob in HTTP', function() { - subject.options.ssl = false; - subject.options.port = null; - expect(subject.readSync('dummyBlobId')).toEqual(dummyData); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - type: 'GET', - url: 'http://jsonblob.com:80/api/jsonBlob/dummyBlobId', - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - async: false, - processData: false - })); - }); - it('should stringify the argument', function() { - expect(subject.readSync({ id: 'dummyBlobId' })).toEqual(dummyData); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - type: 'GET', - url: 'https://jsonblob.com:443/api/jsonBlob', - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - data: '{"id":"dummyBlobId"}', - async: false, - processData: false - })); - }); - }); - - describe('save', function () { - var dummyData; - beforeEach(function() { - dummyData = { saveState: "dummy" }; - spyOn(jQuery, 'ajax').and.callFake(function(settings) { - setTimeout(function() { - settings.success(dummyData, 'success', { - getResponseHeader: jasmine.createSpy('getResponseHeader').and.returnValue('WAAHOOID') - }); - }, 1); - }); - }); - it('should submit properly in HTTPS', function(done) { - var result = subject.save(dummyData), - doneCallback = jasmine.createSpy('doneCallback'); - expect(result).toEqual(jasmine.any(Object)); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - type: 'POST', - url: 'https://jsonblob.com:443/api/jsonBlob', - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - data: '{"saveState":"dummy"}', - processData: false - })); - result.done(function(n) { - expect(result.state()).toEqual('resolved'); - expect(n).toEqual('WAAHOOID'); - done(); - }); - }); - it('should submit properly in HTTP', function(done) { - subject.options.ssl = false; - subject.options.port = null; - var result = subject.save(dummyData), - doneCallback = jasmine.createSpy('doneCallback'); - expect(result).toEqual(jasmine.any(Object)); - expect(jQuery.ajax).toHaveBeenCalledWith(jasmine.objectContaining({ - type: 'POST', - url: 'http://jsonblob.com:80/api/jsonBlob', - contentType: 'application/json; charset=UTF-8', - accept: 'application/json', - dataType: 'json', - data: '{"saveState":"dummy"}', - processData: false - })); - result.done(function(n) { - expect(result.state()).toEqual('resolved'); - expect(n).toEqual('WAAHOOID'); - done(); - }); - }); - }); -}); diff --git a/spec/utils/jsonLd.test.js b/spec/utils/jsonLd.test.js deleted file mode 100644 index a030e91313f70d899878a0bc71a5778ea83d193b..0000000000000000000000000000000000000000 --- a/spec/utils/jsonLd.test.js +++ /dev/null @@ -1,97 +0,0 @@ -describe('JsonLd', function () { - describe('getTextValue', function() { - it('should return empty string for undefined', function() { - expect(Mirador.JsonLd.getTextValue(null, 'en')).toEqual(''); - expect(Mirador.JsonLd.getTextValue(null, 'txg')).toEqual(''); - expect(Mirador.JsonLd.getTextValue(null)).toEqual(''); - }); - - it('should return the same string when given a string', function() { - expect(Mirador.JsonLd.getTextValue('waahoo', 'en')).toEqual('waahoo'); - expect(Mirador.JsonLd.getTextValue('waahoo', 'xto')).toEqual('waahoo'); - expect(Mirador.JsonLd.getTextValue('waahoo')).toEqual('waahoo'); - }); - - it('should return the localized name when given an array of translations', function() { - // Short sample - var sample = [ - { - "@value": "Alternate Title", - "@language": "en" - }, - { - "@value": "Teitl Arall", - "@language": "cy-GB" - } - ]; - //Should grab specified language - expect(Mirador.JsonLd.getTextValue(sample, 'en')).toEqual("Alternate Title"); - expect(Mirador.JsonLd.getTextValue(sample, 'cy-GB')).toEqual("Teitl Arall"); - //Should default to the first entry for non-found language - expect(Mirador.JsonLd.getTextValue(sample, 'txg')).toEqual("Alternate Title"); - //Should default to en - expect(Mirador.JsonLd.getTextValue(sample)).toEqual("Alternate Title"); - }); - - it('should return "@value" key when given an object', function() { - var sample = { - "@value": "Super waahoo", - "@language": "en" - }; - expect(Mirador.JsonLd.getTextValue(sample, 'en')).toEqual("Super waahoo"); - expect(Mirador.JsonLd.getTextValue(sample)).toEqual("Super waahoo"); - }); - - it('should return all values when no value has a langue associated', function() { - var sample = ['First value', - 'Second value']; - expect(Mirador.JsonLd.getTextValue(sample)).toEqual('First value<br />Second value'); - }); - - it('should return all values that best match the language preference', function() { - var sample = [ - 'This is a value without a language.', - {'@value': "This is an American value.", - '@language': "en-US"}, - {'@value': "This ia a British value.", - '@language': "en-UK"}, - 'This is another value without a language.', - {'@value': "C'est une valeur française.", - '@language': "fr"}]; - i18next.languages = ['en-US', 'en'] - expect(Mirador.JsonLd.getTextValue(sample)).toEqual("This is an American value."); - }); - - it('should pick a language if all values have a language but none match the preference', function() { - var sample = [ - {'@value': "This is an American value.", - '@language': "en-US"}, - {'@value': "This is another American value.", - '@language': "en-US"}, - {'@value': "C'est une valeur française.", - '@language': "fr"}]; - window.navigator.languages = ['de-DE', 'de']; - expect(Mirador.JsonLd.getTextValue(sample)) - .toEqual('This is an American value.<br />' + - 'This is another American value.'); - }); - - it('should return all values without an associated language if some have one, but none match the preference', function() { - var sample = [ - {'@value': "C'est une valeur française.", - '@language': "fr"}, - 'This is a value without a language.', - 'This is another value without a language.']; - window.navigator.languages = ['en-US', 'en']; - expect(Mirador.JsonLd.getTextValue(sample)) - .toEqual('This is a value without a language.<br />' + - 'This is another value without a language.'); - }); - - it('should only allow HTML elements permitted by the specification', function() { - var withScript = '<span>This <strong>looks</strong> <em>harmless</em>.<script>window.alert("boom!")</script></span>'; - expect(Mirador.JsonLd.getTextValue(withScript)).toEqual( - "<span>This <strong>looks</strong> <em>harmless</em>.</span>"); - }); - }); -}); diff --git a/spec/utils/localJsonBlobApi.test.js b/spec/utils/localJsonBlobApi.test.js deleted file mode 100644 index 4e2bcd4e411ced0370bc9ada4006cf9c4453049e..0000000000000000000000000000000000000000 --- a/spec/utils/localJsonBlobApi.test.js +++ /dev/null @@ -1,50 +0,0 @@ -describe('LocalJsonBlobApi', function () { - BogusStorage = function() { - this.data = {}; - }; - BogusStorage.prototype = { - setItem: function(k, v) { - this.data[k] = v; - }, - getItem: function(k) { - return this.data[k]; - } - }; - - - var myWindow = { - "bogusStorage": new BogusStorage() - }; - - var dummyBlobs = { - a: { - "waahoo": 5 - }, - b: { - "woohah": "super foobar" - } - }; - - var localBlob; - beforeEach(function() { - localBlob = new Mirador.LocalJSONBlobAPI({ - storage: myWindow.bogusStorage - }); - }); - - it('readSync', function () { - myWindow.bogusStorage.setItem('ABC', JSON.stringify(dummyBlobs.a)); - expect(localBlob.readSync('ABC')).toEqual(dummyBlobs.a); - }); - - it('save', function () { - var promise = null, - savedKey = ""; - (promise = localBlob.save(dummyBlobs.b)).done(function(k) { - savedKey = k; - }); - expect(typeof promise).toBe('object'); - expect(savedKey).not.toEqual(""); - expect(myWindow.bogusStorage.getItem(savedKey)).toEqual(JSON.stringify(dummyBlobs.b)); - }); -}); diff --git a/spec/utils/openSeadragon.test.js b/spec/utils/openSeadragon.test.js deleted file mode 100644 index 7a6ab22abd5eb5d6d1079c50691b667aac3c5e68..0000000000000000000000000000000000000000 --- a/spec/utils/openSeadragon.test.js +++ /dev/null @@ -1,18 +0,0 @@ -describe('OpenSeadragon', function () { - var subject; - - beforeEach(function() { - jQuery('body').append('<div id="osd"></div>'); - this.osd = new Mirador.OpenSeadragon({ - id: 'osd', - toolbarID: 'my-osd-toolbar' - }); - subject = this.osd; - }); - - describe('Construction', function () { - it('should work with default setup', function() { - expect(true).toBe(true); //Force beforeEach setup to run - }); - }); -}); diff --git a/spec/utils/saveController.test.js b/spec/utils/saveController.test.js deleted file mode 100644 index 1ef0a79509f28d31c8032bdc5a0655da5bd128a3..0000000000000000000000000000000000000000 --- a/spec/utils/saveController.test.js +++ /dev/null @@ -1,198 +0,0 @@ -describe('SaveController', function () { - - beforeEach(function() { - localStorage.clear(); - this.eventEmitter = new Mirador.EventEmitter(); - this.config = { - id: 'mock_viewer_id', - saveSession: false, - eventEmitter: this.eventEmitter - }; - }); - - describe('Constructor', function () { - xit ('should fail gracefully when storage is invalid or unavailable', function () { - // When saveSession is true and the storage module fails to initiate, - // display proper error message to user and possibly revert to 'no save' mode. - }); - }); - - describe('Sanity check when saveSession == false', function () { - - beforeEach(function () { - this.config.saveSession = false; - this.saveController = new Mirador.SaveController(this.config); - }); - - it('should not have this.storageModule', function () { - expect(this.saveController.storageModule).toBe(undefined); - }); - - it ('should respond to published events', function () { - // Just making sure bindEvents() is being called. - - // windowUpdated - this.eventEmitter.publish('windowUpdated', {}); - expect(this.saveController.get('windowObjects', 'currentConfig')).toEqual([{}]); - }); - }); - - describe('Sanity check when saveSession == true', function () { - - beforeEach(function () { - this.config.saveSession = true; - this.saveController = new Mirador.SaveController(this.config); - }); - - it('should have _this.storageModule', function () { - expect(this.saveController.storageModule).toBeTruthy(); - }); - - it ('should respond to published events', function () { - // Just making sure bindEvents() is being called. - - // windowUpdated - this.eventEmitter.publish('windowUpdated', {}); - expect(this.saveController.get('windowObjects', 'currentConfig')).toEqual([{}]); - }); - }); - - describe('Working with localStorage', function () { - xit('should deal with localStorage', function () { - }); - }); - - describe('Working with jsonStorageEndpoint', function () { - - beforeEach(function () { - window.Mirador.MockJsonStorege = function () { - this.readSync = function (blobId) { - return { - hash_1: { id: 'stored_config_1', - windowObjects: [] - } - }[blobId]; - }; - }; - this.config.jsonStorageEndpoint = { - 'name': 'Mock JSON Storage Endpoint', - 'module': 'MockJsonStorege' - }; - this.config.saveSession = true; - history.replaceState({}, 'History replaced', '/?key=hash_1'); - - this.saveController = new Mirador.SaveController(this.config); - }); - - it('should read config from storage', function () { - expect(this.saveController.currentConfig.id).toBe('stored_config_1'); - }); - }); - - describe('getWindowObjectById', function () { - - beforeEach(function () { - this.config.saveSession = false; - this.saveController = new Mirador.SaveController(this.config); - }); - - // TODO porbably should test for different values of saveSession and - // storage engines. - it('should retrieve the saved window object', function () { - this.config.saveSeesion = false; - this.config.windowObjects = [ - { id: 'mock_window_1' }, - { id: 'mock_window_2' } - ]; - var saveController = new Mirador.SaveController(this.config); - expect(saveController.getWindowObjectById('mock_window_1').id).toBe('mock_window_1'); - expect(saveController.getWindowObjectById('mock_window_2').id).toBe('mock_window_2'); - }); - }); - - describe('Get and set properties', function () { - it('should retrieve saved values', function () { - var saveController = new Mirador.SaveController(this.config); - - saveController.set('key_1', 'val_1'); - saveController.set('key_2', 'val_2', { parent: 'currentConfig'}); - - expect(saveController.get('key_1')).toBe('val_1'); - expect(saveController.get('key_2', 'currentConfig')).toBe('val_2'); - expect(saveController.getStateProperty('key_2')).toBe('val_2'); - }); - }); - - describe('Test Cleaning Up Objects', function () { - it('should remove circular references', function () { - - var saveController = new Mirador.SaveController(this.config); - - var object_a = { valid: 'This is a valid value' }; - var object_b = { valid: 'This is a valid value', invalid: object_a }; - object_a.object_b = object_b; - - var cleaned = saveController.cleanup(object_a); - - /** - * The original object should be untouched. - */ - expect(object_a.object_b.invalid).not.toBeUndefined(); - - /** - * object_a reference in cleaned should be the only - * value missing. - */ - expect(cleaned.valid).toBe('This is a valid value'); - expect(cleaned.object_b.invalid).toBeUndefined(); - expect(cleaned.object_b.valid).toBe('This is a valid value'); - }); - }); - - describe('Event handling', function () { - xit('should handle windowUpdated', function () { - }); - - xit('should handle imageBoundsUpdated', function () { - }); - - it('should handle ANNOTATIONS_LIST_UPDATED', function () { - var saveController = new Mirador.SaveController(this.config); - var windowId = 'mock_window_1'; - var annotationsList = [ - { '@id': 'mock_annotation_1' }, - { '@id': 'mock_annotation_2' } - ]; - this.eventEmitter.publish('ANNOTATIONS_LIST_UPDATED', { windowId: windowId, - annotationsList: annotationsList }); - expect(saveController.getWindowAnnotationsList(windowId)[0]['@id']).toBe('mock_annotation_1'); - expect(saveController.getWindowAnnotationsList(windowId)[1]['@id']).toBe('mock_annotation_2'); - }); - - xit('should handle WINDOW_ELEMENT_UPDATED', function nnn() { - }); - - xit('should handle windowSlotAddressUpdated', function () { - }); - - xit('should handle manifestQueued', function () { - }); - - xit('should handle slotsUpdated', function () { - }); - - xit('should handle layoutChanged', function () { - }); - - xit('should handle windowSlotAdded', function () { - }); - - xit('should handle windowsRemoved', function () { - }); - - xit('should handle ...etc', function () { - // What the heck is this. - }); - }); - -}); diff --git a/spec/utils/utils.test.js b/spec/utils/utils.test.js deleted file mode 100644 index d31c35089ab4768eb4522ca72a1c67a8e574e1ad..0000000000000000000000000000000000000000 --- a/spec/utils/utils.test.js +++ /dev/null @@ -1,360 +0,0 @@ -describe('Utils', function() { - beforeEach(function() { - this.utils = Mirador; - this.imagesList = [{ - '@id': '1', - 'title': '1r', - 'height': 10, - 'width': 20 - }, { - '@id': '2', - 'title': '1v', - 'height': 15, - 'width': 25 - }]; - - this.imageTitlesAndIds = [{ - '@id': '1', - 'title': '1r' - }, { - '@id': '2', - 'title': '1v' - }]; - this.manifests = { - "manifest-1234": { - "uri":"http://xyz.edu/data/Manifest.json", - "metadata": { - "details": { - 'label': 'Collection 123' - } - }, - "sequences": [{ - "imagesList": this.imagesList - }] - } - }; - }); - - it('should trim trailing whitespaces from a string', function() { - expect(this.utils.trimString(' abc ')).toEqual('abc'); - }); - - it('should find the correct image index by ID', function() { - expect(this.utils.getImageIndexById(this.imagesList, '1')).toEqual(0); - expect(this.utils.getImageIndexById(this.imagesList, '2')).toEqual(1); - }); - - describe('getThumbnailForCanvas', function() { - it('should get the thumbnail if found as a string', function() { - this.imagesList[0].thumbnail = "http://0.0.0.0/thumbnail.png"; - expect(this.utils.getThumbnailForCanvas(this.imagesList[0], "20")).toEqual(this.imagesList[0].thumbnail); - }); - it('should get the thumbnail if found as a service', function() { - this.imagesList[0].thumbnail = { - service: { - '@context': "http://iiif.io/api/image/2/context.json", - '@id': "http://0.0.0.0/iiif/thumbnail" - } - }; - expect(this.utils.getThumbnailForCanvas(this.imagesList[0], "20")).toEqual("http://0.0.0.0/iiif/thumbnail/full/20,/0/default.jpg"); - }); - it('should use main image if nothing else is found', function() { - this.imagesList[0].images = [{ - resource: { - "service": { - '@context': "http://iiif.io/api/image/2/context.json", - "@id": "http://0.0.0.0/iiif/thumbnail" - } - } - }]; - expect(this.utils.getThumbnailForCanvas(this.imagesList[0], "20")).toEqual("http://0.0.0.0/iiif/thumbnail/full/20,/0/default.jpg"); - }); - }); - - describe('jQuery.fn.slideFadeToggle()', function() { - var elem; - beforeEach(function() { - elem = document.createElement('div'); - $('<p>Waahoo</p>').appendTo(elem); - }); - it('should hide a shown element', function(done) { - jQuery(elem).slideFadeToggle(10, 'linear', function() { - expect(jQuery(this)).not.toBeVisible(); - done(); - }); - }); - }); - - describe('XHR utils', function() { - beforeEach(function() { - this.server = sinon.fakeServer.create(); - }); - - afterEach(function() { - this.server.restore(); - }); - - // it('should return JSON data for a given URL via ajax call', function() { - // var data = { 'a': 'b' }, - // error; // undefined - // - // this.server.respondWith("GET", "http://manifest/url/success", - // [200, { "Content-Type": "application/json" }, - // JSON.stringify(data)]); - // this.server.respondWith("GET", "http://manifest/url/failed", - // [500, {}, '']); - - // var callback = sinon.spy(); - // myLib.getCommentsFor("/manifest/url", callback); - // this.server.respond(); - - // // spyOn(jQuery, 'ajax').and.callFake(function(params) { - // // if (/success$/.test(params.url)) { - // // params.success(data); - // // } else { - // // params.error(error); - // // } - // // }); - - // expect(this.utils.getJsonFromUrl('http://manifest/url/success', true)).toEqual(data); - // expect(this.utils.getJsonFromUrl('http://manifest/url/success', false)).toEqual(data); - // expect(this.utils.getJsonFromUrl('http://manifest/url/failed', false)).toEqual(error); - // }); - }); - - describe('isOnScreen', function() { - var subject, win, el_offset, el; - beforeEach(function() { - subject = this.utils; - win = { - scrollTop: jasmine.createSpy('scrollTop').and.returnValue(320), - scrollLeft: jasmine.createSpy('scrollLeft').and.returnValue(48), - outerHeight: jasmine.createSpy('outerHeight').and.returnValue(200), - outerWidth: jasmine.createSpy('outerWidth').and.returnValue(150) - }; - el_offset = { - top: 0, - left: 0 - }; - el = { - offset: jasmine.createSpy().and.callFake(function() { - return el_offset; - }), - height: jasmine.createSpy().and.returnValue(16), - width: jasmine.createSpy().and.returnValue(32) - }; - spyOn(window, 'jQuery').and.callFake(function(arg) { - if (arg === window) { - return win; - } - else { - return el; - } - }); - }); - it('should return true for things on screen', function() { - el_offset = { top: 330, left: 60 }; - expect(subject.isOnScreen('elem')).toBe(true); - el_offset = { top: 660, left: 200 }; - expect(subject.isOnScreen('elem', 2)).toBe(true); - }); - it('should return false for things off screen', function() { - jQuery.each([{ top: 0, left: 60 }, { top: 900, left: 60 }, { top: 330, left: 0 }, { top: 650, left: 2000 }], function(k, eo) { - el_offset = eo; - expect(subject.isOnScreen('elem')).toBe(false); - }); - jQuery.each([{ top: 0, left: 100 }, { top: 1900, left: 100 }, { top: 650, left: 0 }, { top: 330, left: 700 }], function(k, eo) { - el_offset = eo; - expect(subject.isOnScreen('elem', 2)).toBe(false); - }); - }); - }); - - describe('getRangeIDByCanvasID', function() { - it('should find ranges correctly', function() { - var canvasID = 'http://0.0.0.0/iiif/0/canvas', - structures = [ - { - '@id': 'http://0.0.0.0/iiif/no1/sequence', - canvases: [ 'http://0.0.0.0/iiif/1/canvas', 'http://0.0.0.0/iiif/2/canvas' ] - }, - { - '@id': 'http://0.0.0.0/iiif/no2/sequence', - canvases: [ ] - }, - { - '@id': 'http://0.0.0.0/iiif/yes1/sequence', - canvases: [ 'http://0.0.0.0/iiif/0/canvas' ] - }, - { - '@id': 'http://0.0.0.0/iiif/yes2/sequence', - canvases: [ 'http://0.0.0.0/iiif/1/canvas', 'http://0.0.0.0/iiif/0/canvas' ] - }, - ]; - expect(this.utils.getRangeIDByCanvasID(structures, canvasID)).toEqual(['http://0.0.0.0/iiif/yes1/sequence', 'http://0.0.0.0/iiif/yes2/sequence']); - }); - }); - - describe('createImagePromise', function() { - - it('should load an image if the request is good', function(done) { - var dataUri = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' - - var imagePromise = Mirador.createImagePromise(dataUri); - - imagePromise.done(function(image) { - expect(image).toBe(dataUri); - console.log(image); - done(); - }); - - }); - - it('should return an error message to the console if the result is bad', function(done) { - var dataUri = 'http://0.0.0.0/invalid.png'; - spyOn(console, 'log').and.returnValue(); - var imagePromise = Mirador.createImagePromise(dataUri); - imagePromise.fail(function(image) { - expect(image).toBe(dataUri); - expect(console.log).toHaveBeenCalledWith('image failed to load: http://0.0.0.0/invalid.png'); - done(); - }); - }); - }); - - describe('getImageIndexById', function() { - it('should return index of the image with the given id', function() { - expect(this.utils.getImageIndexById(this.imagesList, '1')).toBe(0); - expect(this.utils.getImageIndexById(this.imagesList, '2')).toBe(1); - // TODO: should expect -1 or throw exception instead - expect(this.utils.getImageIndexById(this.imagesList, '0')).toBe(0); - }); - }); - - describe('getThumbnailForCanvas', function() { - it('should get the proper thumbnail for a canvas when thumbnail is given as a string', function() { - var stringUrl = 'http://images.example.org/thumbnail/1'; - var canvas = { - '@id': 'http://manifests.example.org/canvas/1', - thumbnail: stringUrl - }; - expect(this.utils.getThumbnailForCanvas(canvas, 100)).toEqual(stringUrl); - }); - - it('should get the proper thumbnail for a canvas when thumbnail is given as a service', function() { - var canvas = { - '@id': 'http://manifests.example.org/canvas/2', - thumbnail: { - service: { - profile: 'http://iiif.io/api/image/2/level1.json', - '@context': 'http://iiif.io/api/image/2/context.json', - '@id': 'http://images.example.org/image/1' - } - } - } - expect(this.utils.getThumbnailForCanvas(canvas, 100)) - .toEqual('http://images.example.org/image/1/full/100,/0/default.jpg'); - }); - }); - - describe('getQueryParams', function() { - it('should properly parse a url with query parameters', function() { - var queryParams = this.utils.getQueryParams('http://zimeon.github.io/iiif-dragndrop/e-codices-help.html?manifest=http://www.e-codices.unifr.ch/metadata/iiif/kba-0003/manifest.json&canvas=http://www.e-codices.unifr.ch/metadata/iiif/kba-0003/canvas/kba-0003_002r.json'); - expect(queryParams.manifest).toBe("http://www.e-codices.unifr.ch/metadata/iiif/kba-0003/manifest.json"); - expect(queryParams.canvas).toBe("http://www.e-codices.unifr.ch/metadata/iiif/kba-0003/canvas/kba-0003_002r.json"); - }); - it('should properly parse a url without query parameters', function() { - var queryParams = this.utils.getQueryParams('http://www.google.com'); - expect(queryParams).toEqual({}); - }); - }); - - describe('exitFullscreen', function() { - beforeEach(function() { - delete document.exitFullscreen; - delete document.mozCancelFullScreen; - delete document.webkitExitFullscreen; - }); - it('should run without prefixes if available', function() { - document.exitFullscreen = jasmine.createSpy(); - this.utils.exitFullscreen(); - expect(document.exitFullscreen).toHaveBeenCalled(); - }); - it('should run with moz prefix as a backup', function() { - document.mozCancelFullScreen = jasmine.createSpy(); - this.utils.exitFullscreen(); - expect(document.mozCancelFullScreen).toHaveBeenCalled(); - }); - it('should run with webkit prefix as a backup', function() { - document.webkitExitFullscreen = jasmine.createSpy(); - this.utils.exitFullscreen(); - expect(document.webkitExitFullscreen).toHaveBeenCalled(); - }); - }); - - describe('enterFullscreen', function() { - var subject; - beforeEach(function() { - subject = this.utils; - }); - it('should run standard requestFullscreen over all others', function() { - jQuery.each(['mozRequestFullScreen', 'webkitRequestFullscreen', 'msRequestFullscreen'], function(k, v) { - var el = jasmine.createSpyObj('el', ['requestFullscreen', v]); - subject.enterFullscreen(el); - expect(el.requestFullscreen).toHaveBeenCalled(); - expect(el[v]).not.toHaveBeenCalled(); - }); - }); - it('should run mozRequestFullScreen if available', function() { - var el = jasmine.createSpyObj('el', ['mozRequestFullScreen']); - subject.enterFullscreen(el); - expect(el.mozRequestFullScreen).toHaveBeenCalled(); - }); - it('should run webkitRequestFullscreen if available', function() { - var el = jasmine.createSpyObj('el', ['webkitRequestFullscreen']); - subject.enterFullscreen(el); - expect(el.webkitRequestFullscreen).toHaveBeenCalled(); - }); - it('should run msRequestFullscreen if available', function() { - var el = jasmine.createSpyObj('el', ['msRequestFullscreen']); - subject.enterFullscreen(el); - expect(el.msRequestFullscreen).toHaveBeenCalled(); - }); - }); - - describe('isFullscreen', function() { - var dummyFullscreenElement = { - length: 1 - }; - beforeEach(function() { - spyOn(this.utils, 'fullscreenElement').and.returnValue(dummyFullscreenElement); - }); - it('should detect fullscreen', function() { - expect(this.utils.isFullscreen()).toBe(true); - }); - it('should detect non-fullscreen', function() { - dummyFullscreenElement.length = 0; - expect(this.utils.isFullscreen()).toBe(false); - }); - }); - - describe('fullscreenElement', function() { - beforeEach(function() { - delete document.fullscreenElement; - delete document.mozFullScreenElement; - delete document.webkitFullscreenElement; - }); - it('should return document.fullscreenElement if available', function() { - document.fullscreenElement = jasmine.createSpyObj('fullscreenElement', ['length']); - expect(this.utils.fullscreenElement()).toBe(document.fullscreenElement); - }); - it('should return document.mozFullScreenElement if available', function() { - document.mozFullScreenElement = jasmine.createSpyObj('mozFullScreenElement', ['length']); - expect(this.utils.fullscreenElement()).toBe(document.mozFullScreenElement); - }); - it('should return document.webkitFullscreenElement if available', function() { - document.webkitFullscreenElement = jasmine.createSpyObj('webkitFullscreenElement', ['length']); - expect(this.utils.fullscreenElement()).toBe(document.webkitFullscreenElement); - }); - }); -}); diff --git a/spec/viewer.test.js b/spec/viewer.test.js deleted file mode 100644 index 9ca650060df7ae073f2692d83858d4a81dceab0a..0000000000000000000000000000000000000000 --- a/spec/viewer.test.js +++ /dev/null @@ -1,2 +0,0 @@ -describe('Viewer', function() { -}); diff --git a/spec/viewer/bookmarkPanel.test.js b/spec/viewer/bookmarkPanel.test.js deleted file mode 100644 index 5282eef01a7624b2e3348e40751c3728662370b0..0000000000000000000000000000000000000000 --- a/spec/viewer/bookmarkPanel.test.js +++ /dev/null @@ -1,75 +0,0 @@ -describe('BookmarkPanel', function() { - beforeEach(function() { - this.eventEmitter = new Mirador.EventEmitter(); - this.viewerDiv = jQuery('<div>'); - this.panel = new Mirador.BookmarkPanel({ - appendTo: this.viewerDiv, - state: new Mirador.SaveController(jQuery.extend(true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter:this.eventEmitter})), - eventEmitter: this.eventEmitter - }); - }); - - it('should initialize itself', function() { - expect(this.panel).toBeDefined(); - expect(this.panel.storageModule).toBeDefined(); - }); - - it('should listen for actions', function() { - spyOn(this.panel, 'onPanelVisible'); - spyOn(this.panel, 'onConfigUpdated'); - this.eventEmitter.publish('bookmarkPanelVisible'); - this.eventEmitter.publish('saveControllerConfigUpdated'); - expect(this.panel.onPanelVisible).toHaveBeenCalled(); - expect(this.panel.onConfigUpdated).toHaveBeenCalled(); - }); - - it('should know how to show itself', function() { - spyOn(this.panel, 'hide'); - spyOn(this.panel, 'show'); - - this.panel.onPanelVisible(null, true); - expect(this.panel.show).toHaveBeenCalled(); - expect(this.panel.hide).not.toHaveBeenCalled(); - }); - - it('should know how to hide itself', function() { - spyOn(this.panel, 'hide'); - spyOn(this.panel, 'show'); - - this.panel.onPanelVisible(null, false); - expect(this.panel.show).not.toHaveBeenCalled(); - expect(this.panel.hide).toHaveBeenCalled(); - }); - - it('should update the share url when the saveController config is updated', function() { - var shareUrl, - blobId = "123abc", - dfd = jQuery.Deferred(), - storageModuleMock = { - save: function(config) { - return dfd.promise(); - } - }, - urlBar = this.viewerDiv.find('#share-url'); - - this.panel.storageModule = storageModuleMock; - this.panel.onConfigUpdated(); - dfd.resolve(blobId).then(function() { - shareUrl = urlBar.val(); - expect(shareUrl).toBeDefined(); - expect(shareUrl).toContain("?json="+blobId); - }); // place the test runs at the end of the promise chain. - }); - - it('should show itself', function() { - spyOn(jQuery.fn, 'show').and.callThrough(); - this.panel.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - }); - - it('should hide itself', function() { - spyOn(jQuery.fn, 'hide').and.callThrough(); - this.panel.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - }); -}); diff --git a/spec/viewer/collectionTreeManifestsPanel.test.js b/spec/viewer/collectionTreeManifestsPanel.test.js deleted file mode 100644 index dbc93b247d02ab70d5e05215bedaa4c569127b78..0000000000000000000000000000000000000000 --- a/spec/viewer/collectionTreeManifestsPanel.test.js +++ /dev/null @@ -1,501 +0,0 @@ -describe('CollectionTreeManifestsPanel', function() { - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.dummyManifestContent = getJSONFixture('dummyManifest.json'); - this.viewerDiv = jQuery('<div>'); - this.eventEmitter = new Mirador.EventEmitter(); - this.panel = new Mirador.CollectionTreeManifestsPanel({ - appendTo: this.viewerDiv, - state: new Mirador.SaveController({eventEmitter: this.eventEmitter}), - eventEmitter: this.eventEmitter - }) - }); - - it('should initialize itself', function() { - expect(this.panel).toBeDefined(); - }); - - it('should listen for actions', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - var collection = new Mirador.Collection(null, 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization" - }); - spyOn(this.panel, 'onPanelVisible'); - spyOn(this.panel, 'onManifestReceived'); - spyOn(this.panel, 'onCollectionReceived'); - spyOn(this.panel, 'addObjectFromUrl'); - spyOn(this.panel, 'addCollectionFromUrl'); - this.eventEmitter.publish('manifestsPanelVisible.set'); - this.eventEmitter.publish('manifestReceived', manifest); - this.eventEmitter.publish('collectionReceived', collection); - this.eventEmitter.publish('ADD_OBJECT_FROM_URL', [collection.uri, 'Dummy Location']); - this.eventEmitter.publish('ADD_COLLECTION_FROM_URL', [collection.uri, 'Dummy Location']); - expect(this.panel.onPanelVisible).toHaveBeenCalled(); - expect(this.panel.onManifestReceived).toHaveBeenCalled(); - expect(this.panel.onCollectionReceived).toHaveBeenCalled(); - expect(this.panel.addObjectFromUrl).toHaveBeenCalled(); - expect(this.panel.addCollectionFromUrl).toHaveBeenCalled(); - }); - - it('should bind events', function() { - var element = this.panel.element; - - spyOn(this.panel, 'addObjectUrl'); - element.find('form#url-load-form').trigger('submit'); - expect(this.panel.addObjectUrl).toHaveBeenCalled(); - - spyOn(this.panel, 'togglePanel'); - element.find('.remove-object-option').trigger('click'); - expect(this.panel.togglePanel).toHaveBeenCalled(); - - spyOn(this.panel, 'filterManifests'); - element.find('#manifest-search').trigger('keyup'); - expect(this.panel.filterManifests).toHaveBeenCalled(); - - spyOn(jQuery.Event.prototype, 'preventDefault').and.callThrough(); - expect(jQuery.Event.prototype.preventDefault).not.toHaveBeenCalled(); - element.find('#manifest-search-form').submit(); - expect(jQuery.Event.prototype.preventDefault).toHaveBeenCalled(); - - spyOn(this.panel, 'resizePanel'); - jQuery(window).trigger('resize'); - expect(this.panel.resizePanel).toHaveBeenCalled(); - }); - - ['hide', 'show'].forEach(function(action) { - it('should ' + action, function() { - spyOn(jQuery.fn, action); - this.panel[action](); - expect(jQuery.fn[action]).toHaveBeenCalled(); - }); - }); - - it('should add manifest from url', function() { - spyOn(this.eventEmitter, 'publish'); - var url = "http://example.com/manifest.json"; - this.panel.addManifestUrl(url); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [url, "(Added from URL)"]); - }); - - it('should add object from url', function() { - spyOn(this.eventEmitter, 'publish'); - var url = "http://example.com/manifest.json"; - this.panel.addObjectUrl(url); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_OBJECT_FROM_URL', [url, "(Added from URL)"]); - }); - - it('should toggle load window', function() { - spyOn(this.eventEmitter, 'publish'); - this.panel.togglePanel(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('TOGGLE_LOAD_WINDOW'); - }); - - it('should filter manifests', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - var searchText = this.dummyManifestContent.label - var item = null; - - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(0); - - this.panel.expectedThings.push(manifest.uri); - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(1); - - item = this.panel.element.find('.items-listing li:first'); - expect(item.length).toBe(1); - - this.panel.filterManifests(searchText); - expect(item.css('display')).not.toBe('none'); - - this.panel.filterManifests("XXX"); - expect(item.css('display')).toBe('none'); - - this.panel.filterManifests(""); - expect(item.css('display')).not.toBe('none'); - }); - - it('should set panel visibility', function() { - spyOn(this.panel, 'show'); - spyOn(this.panel, 'hide'); - - this.panel.onPanelVisible(null, true); - expect(this.panel.show).toHaveBeenCalled(); - expect(this.panel.hide).not.toHaveBeenCalled(); - - this.panel.show.calls.reset(); - this.panel.hide.calls.reset(); - - this.panel.onPanelVisible(null, false); - expect(this.panel.show).not.toHaveBeenCalled(); - expect(this.panel.hide).toHaveBeenCalled(); - }); - - it('should resize', function() { - spyOn(this.eventEmitter, 'publish'); - this.panel.resizePanel(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('manifestPanelWidthChanged', this.panel.resultsWidth); - }); - - it('should not respond to non-expected manifests', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(0); - }); - - it('should receive a new manifest when expected', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.expectedThings.push(manifest.uri); - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(1); - }); - - it('should receive drops in the My Objects folder', function() { - expect(this.panel.userManifests).not.toContain('http://www.example.org/manifest.json'); - this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', 'http://www.example.org/manifest.json'); - expect(this.panel.userManifests).toContain('http://www.example.org/manifest.json'); - }); - - it('should clear itself', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.expectedThings.push(manifest.uri); - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(1); - this.panel.clearManifestItems(); - expect(this.panel.manifestListItems.length).toBe(0); - expect(this.panel.element.find('.items-listing li').length).toBe(0); - }); - - describe('Folder changes', function() { - beforeEach(function() { - this.panel.preloadedManifests = ['http://www.example.org/foo.json', 'http://www.example.org/bar.json']; - this.panel.userManifests = ['http://www.example.org/waa.json', 'http://www.example.org/hoo.json']; - }); - - it('should cleanly change to preloads', function() { - this.panel.changeNode({ id: 'preload' }); - expect(this.panel.expectedThings).toContain('http://www.example.org/foo.json'); - expect(this.panel.expectedThings).toContain('http://www.example.org/bar.json'); - expect(this.panel.expectedThings).not.toContain('http://www.example.org/waa.json'); - expect(this.panel.expectedThings).not.toContain('http://www.example.org/hoo.json'); - }); - - it('should cleanly change to my objects', function() { - this.panel.changeNode({ id: 'user' }); - expect(this.panel.expectedThings).not.toContain('http://www.example.org/foo.json'); - expect(this.panel.expectedThings).not.toContain('http://www.example.org/bar.json'); - expect(this.panel.expectedThings).toContain('http://www.example.org/waa.json'); - expect(this.panel.expectedThings).toContain('http://www.example.org/hoo.json'); - }); - - it('should cleanly change to a loaded collection', function() { - this.panel.nodeManifests['foo'] = ['http://www.example.org/coo.json']; - this.panel.changeNode({ id: 'foo' }); - expect(this.panel.expectedThings).toContain('http://www.example.org/coo.json'); - }); - }); - - describe('Expanding nodes', function() { - it('should expand subcollection URLs', function() { - spyOn(this.panel, 'updateCollectionFromUrl'); - this.panel.nodeCollections['abc'] = ['http://www.example.org/foo.json', 'http://www.example.org/bar.json']; - this.panel.expandNode({ id: 'abc' }); - expect(this.panel.updateCollectionFromUrl).toHaveBeenCalledWith('http://www.example.org/foo.json', 'abc'); - expect(this.panel.updateCollectionFromUrl).toHaveBeenCalledWith('http://www.example.org/bar.json', 'abc'); - }); - }); - - describe('Adding manifests from URL', function() { - it('should grab cached manifests from the state manager and add it right away', function() { - var manifest = new Mirador.Manifest(this.dummyManifestContent['@id'], 'Dummy Location', this.dummyManifestContent); - this.panel.eventEmitter.publish('manifestQueued', manifest, ''); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.addManifestFromUrl(manifest.uri); - expect(this.panel.manifestListItems.length).toBe(1); - }); - it('should grab new manifests from the source and not add it just yet', function() { - var manifest = new Mirador.Manifest(this.dummyManifestContent['@id'], 'Dummy Location', this.dummyManifestContent); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.addManifestFromUrl(manifest.uri); - expect(this.panel.manifestListItems.length).toBe(0); - }); - }); - - describe('Adding collections from URL', function() { - var dummyCollection; - beforeEach(function() { - dummyCollection = new Mirador.Collection("http://example.org/iiif/collection/top", 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ] - }); - spyOn(this.panel, 'addCollectionNode').and.returnValue('qqqq'); - }); - it('should grab cached collectionss from the state manager and add it right away', function() { - this.panel.eventEmitter.publish('manifestQueued', dummyCollection, ''); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - this.panel.addCollectionFromUrl(dummyCollection.uri); - expect(this.panel.addCollectionNode).toHaveBeenCalled(); - }); - it('should grab new manifests from the source and not add it just yet', function() { - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - this.panel.addCollectionFromUrl(dummyCollection.uri); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - }); - it('should also jump to the node if the jumpToIt parameter is set', function() { - spyOn(jQuery.fn, 'jstree'); - this.panel.eventEmitter.publish('manifestQueued', dummyCollection, ''); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - this.panel.addCollectionFromUrl(dummyCollection.uri, null, true); - expect(this.panel.addCollectionNode).toHaveBeenCalled(); - expect(jQuery.fn.jstree).toHaveBeenCalledWith('deselect_all'); - expect(jQuery.fn.jstree).toHaveBeenCalledWith('select_node', 'qqqq'); - expect(jQuery.fn.jstree).toHaveBeenCalledWith('open_node', 'qqqq'); - }); - it('should add to the top-level only once per URI', function() { - this.panel.eventEmitter.publish('manifestQueued', dummyCollection, ''); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - this.panel.addCollectionFromUrl(dummyCollection.uri, null); - expect(this.panel.addCollectionNode).toHaveBeenCalled(); - this.panel.addCollectionNode.calls.reset(); - this.panel.addCollectionFromUrl(dummyCollection.uri, null); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - }); - }); - - describe('Updating collections from URL', function() { - var dummyCollection; - beforeEach(function() { - dummyCollection = new Mirador.Collection("http://example.org/iiif/collection/top", 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization" - }); - spyOn(this.panel, 'updateCollectionNode'); - }); - it('should grab cached collectionss from the state manager and update it right away', function() { - this.panel.eventEmitter.publish('manifestQueued', dummyCollection, ''); - expect(this.panel.updateCollectionNode).not.toHaveBeenCalled(); - this.panel.updateCollectionFromUrl(dummyCollection.uri); - expect(this.panel.updateCollectionNode).toHaveBeenCalled(); - }); - it('should grab new manifests from the source and not updated it just yet', function() { - expect(this.panel.updateCollectionNode).not.toHaveBeenCalled(); - this.panel.updateCollectionFromUrl(dummyCollection.uri); - expect(this.panel.updateCollectionNode).not.toHaveBeenCalled(); - }); - }); - - describe('Receiving good collections', function() { - var collection; - beforeEach(function() { - collection = new Mirador.Collection(null, 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization" - }); - spyOn(this.panel, 'addCollectionNode'); - spyOn(this.panel, 'updateCollectionNode'); - }); - it('should defer if the tree is not ready', function() { - this.panel.treeQueue = []; - this.panel.eventEmitter.publish('collectionReceived', [collection, collection.uri, null]); - expect(this.panel.treeQueue[0].length).toEqual(4); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - expect(this.panel.updateCollectionNode).not.toHaveBeenCalled(); - }); - it('should add a new node if no parent node ID is specified', function() { - delete this.panel.treeQueue; - this.panel.eventEmitter.publish('collectionReceived', [collection, collection.uri, null]); - expect(this.panel.addCollectionNode).toHaveBeenCalled(); - expect(this.panel.updateCollectionNode).not.toHaveBeenCalled(); - }); - it('should update under an existing node if a parent node ID is specified', function() { - delete this.panel.treeQueue; - this.panel.eventEmitter.publish('collectionReceived', [collection, collection.uri, 'dummyNode']); - expect(this.panel.addCollectionNode).not.toHaveBeenCalled(); - expect(this.panel.updateCollectionNode).toHaveBeenCalled(); - }); - }); - - describe('Receiving failed collections', function() { - beforeEach(function() { - spyOn(jQuery.fn, 'jstree'); - }); - it('should defer if the tree is not ready', function() { - this.panel.treeQueue = []; - this.panel.eventEmitter.publish('collectionNotReceived', ['foo', null]); - expect(jQuery.fn.jstree).not.toHaveBeenCalled(); - }); - it('mark all nodes of this URI as defective', function() { - delete this.panel.treeQueue; - this.panel.registerNodeIdUriPair('nodeId', 'foo'); - this.panel.eventEmitter.publish('collectionNotReceived', ['foo', 'nodeId']); - expect(jQuery.fn.jstree).toHaveBeenCalledWith('set_icon', 'nodeId', 'fa fa-ban'); - expect(jQuery.fn.jstree).toHaveBeenCalledWith('disable_node', 'nodeId'); - }); - }); - - describe('Registering nodeID-URI pairings', function() { - it('should register a URI once successfully', function() { - this.panel.registerNodeIdUriPair('nodeId', 'http://www.foo.net/stuff.json'); - expect(this.panel.nodeIdToUri['nodeId']).toEqual('http://www.foo.net/stuff.json'); - expect(this.panel.uriToNodeId['http://www.foo.net/stuff.json']).toEqual(['nodeId']); - }); - it('should register a URI twice successfully', function() { - this.panel.registerNodeIdUriPair('nodeId', 'http://www.foo.net/stuff.json'); - this.panel.registerNodeIdUriPair('nodeId2', 'http://www.foo.net/stuff.json'); - expect(this.panel.nodeIdToUri['nodeId']).toEqual('http://www.foo.net/stuff.json'); - expect(this.panel.nodeIdToUri['nodeId2']).toEqual('http://www.foo.net/stuff.json'); - expect(this.panel.uriToNodeId['http://www.foo.net/stuff.json']).toEqual(['nodeId', 'nodeId2']); - }); - }); - - describe('Adding nodes', function() { - var collection; - beforeEach(function() { - collection = new Mirador.Collection("http://example.org/iiif/collection/top", null, { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ], - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }); - }); - it('should add unexpanded nodes', function() { - var newNodeId = this.panel.addCollectionNode(null, collection, true); - expect(newNodeId).not.toBeUndefined(); - expect(this.panel.nodeCollections[newNodeId]).toEqual(["http://example.org/iiif/collection/part2"]); - expect(this.panel.nodeManifests[newNodeId]).toEqual(["http://example.org/iiif/book1/manifest", "http://example.org/iiif/book2/manifest"]); - expect(this.panel.nodeChildren[newNodeId]).toEqual([]); - }); - it('should add expanded nodes', function() { - var newNodeId = this.panel.addCollectionNode(null, collection); - expect(newNodeId).not.toBeUndefined(); - expect(this.panel.nodeCollections[newNodeId]).toEqual(["http://example.org/iiif/collection/part2"]); - expect(this.panel.nodeManifests[newNodeId]).toEqual(["http://example.org/iiif/book1/manifest", "http://example.org/iiif/book2/manifest"]); - expect(this.panel.nodeChildren[newNodeId].length).toEqual(1); - }); - }); - - describe('Updating nodes', function() { - var collection; - beforeEach(function() { - spyOn(this.panel, 'addCollectionNode'); - spyOn(jQuery.fn, 'jstree'); - collection = new Mirador.Collection("http://example.org/iiif/collection/top", null, { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "collections": [ - { - "@id": "http://example.org/iiif/collection/part2", - "@type": "sc:Collection", - "label": "Sub Collection 2" - } - ], - "manifests": [ - { - "@id": "http://example.org/iiif/book1/manifest", - "@type": "sc:Manifest", - "label": "Book 1" - }, - { - "@id": "http://example.org/iiif/book2/manifest", - "@type": "sc:Manifest", - "label": "Book 2" - } - ], - }); - }); - it('should update information', function() { - this.panel.registerNodeIdUriPair('junk', "http://example.org/iiif/collection/supertop"); - this.panel.nodeCollections['junk'] = "http://example.org/iiif/collection/top"; - this.panel.registerNodeIdUriPair('abc', "http://example.org/iiif/collection/top"); - this.panel.nodeChildren['junk'] = ['abc']; - this.panel.unexpandedNodes['abc'] = true; - - this.panel.updateCollectionNode('junk', collection); - expect(this.panel.nodeCollections['abc']).toEqual(["http://example.org/iiif/collection/part2"]); - expect(this.panel.nodeManifests['abc']).toEqual(["http://example.org/iiif/book1/manifest", "http://example.org/iiif/book2/manifest"]); - expect(this.panel.nodeChildren['abc'].length).toEqual(1); - }); - }); - - describe('Adding objects from URL', function() { - var manifest, collection, responseValue; - beforeEach(function() { - manifest = new Mirador.Manifest(this.dummyManifestContent['@id'], 'Dummy Location', this.dummyManifestContent); - collection = new Mirador.Collection("http://example.org/iiif/collection/top", 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization" - }); - spyOn(jQuery, 'ajax').and.callFake(function(args) { - args.success(responseValue); - }); - }); - it('should add loaded collections', function() { - this.panel.eventEmitter.publish('manifestQueued', collection, ''); - spyOn(this.panel.eventEmitter, 'publish'); - this.panel.addObjectFromUrl(collection.uri, "From Foo"); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('ADD_COLLECTION_FROM_URL', [collection.uri, "From Foo"]); - }); - it('should add loaded manifests', function() { - this.panel.eventEmitter.publish('manifestQueued', manifest, ''); - spyOn(this.panel.eventEmitter, 'publish'); - this.panel.addObjectFromUrl(manifest.uri, "From Foo"); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [manifest.uri, "From Foo"]); - }); - it('should add new collections', function() { - spyOn(this.panel.eventEmitter, 'publish'); - responseValue = collection.jsonLd; - this.panel.addObjectFromUrl(collection.uri, "From Foo"); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('manifestQueued', jasmine.any(Object), ''); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('ADD_COLLECTION_FROM_URL', [collection.uri, "From Foo"]); - }); - it('should add new manifests', function() { - spyOn(this.panel.eventEmitter, 'publish'); - responseValue = manifest.jsonLd; - this.panel.addObjectFromUrl(manifest.uri, "From Foo"); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('manifestQueued', jasmine.any(Object), ''); - expect(this.panel.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [manifest.uri, "From Foo"]); - }); - }); -}); diff --git a/spec/viewer/mainMenu.js b/spec/viewer/mainMenu.js deleted file mode 100644 index e08e68fe764b003943a303e165cdee3e83cbdbcd..0000000000000000000000000000000000000000 --- a/spec/viewer/mainMenu.js +++ /dev/null @@ -1,148 +0,0 @@ -describe('MainMenu', function () { - - describe('default configuration', function() { - beforeEach(function() { - - //register Handlebars helper - Handlebars.registerHelper('t', function(i18n_key) { - var result = i18next.t(i18n_key); - return new Handlebars.SafeString(result); - }); - - var mainMenuSettings = { - 'buttons' : { - 'bookmark' : true, - 'layout' : true, - 'options' : false, - 'fullScreenViewer': true - } - }; - - this.eventEmitter = new Mirador.EventEmitter(); - this.viewerDiv = jQuery('<div>'); - this.mainMenu = new Mirador.MainMenu({ - state: new Mirador.SaveController({"mainMenuSettings": mainMenuSettings, eventEmitter:this.eventEmitter}), - eventEmitter: this.eventEmitter, - appendTo: this.viewerDiv, - mainMenuBarCls: 'menu-bar', - }); - - }); - - // Tests rendering - it('properly renders the template', function () { - expect(this.viewerDiv.find('.bookmark-workspace')).toExist(); - expect(this.viewerDiv.find('.change-layout')).toExist(); - expect(this.viewerDiv.find('.fullscreen-viewer')).toExist(); - expect(this.mainMenu.element).toHaveClass('menu-bar'); - }); - - // Tests events handling - var menu_invocations = [ - {'name': 'bookmark', 'selector': '.bookmark-workspace', 'event': 'TOGGLE_BOOKMARK_PANEL'}, - {'name': 'layout', 'selector': '.change-layout', 'event': 'TOGGLE_WORKSPACE_PANEL'}, - {'name': 'fullscreen', 'selector': '.fullscreen-viewer', 'event': 'TOGGLE_FULLSCREEN'} - ]; - menu_invocations.forEach(function(test) { - it("can detect clicking " + test.name + " and publishes event", function() { - spyOn(this.eventEmitter, 'publish'); - this.viewerDiv.find(test.selector).trigger('click'); - expect(this.eventEmitter.publish).toHaveBeenCalledWith(test.event); - }); - }); - - }); - - describe('toggling behaviour', function() { - - beforeEach(function() { - var mainMenuSettings = { - 'buttons' : { - 'bookmark' : true, - 'layout' : false, - 'options' : false - } - }; - this.viewerDiv = jQuery('<div>'); - this.eventEmitter = new Mirador.EventEmitter(); - this.mainMenu = new Mirador.MainMenu({ - state: new Mirador.SaveController({"mainMenuSettings": mainMenuSettings, eventEmitter: this.eventEmitter}), - eventEmitter: this.eventEmitter, - appendTo: this.viewerDiv, - mainMenuBarCls: 'menu-bar', - }); - }); - - it("doesn't render useless elements", function () { - expect(this.viewerDiv.find('.change-layout')).not.toExist(); - }); - - // test other options? - - }); - - describe('user buttons/logo', function () { - beforeEach(function () { - - spyOn(console, 'log'); - var mainMenuSettings = { - /* Setup will fail without 'buttons' */ - 'buttons' : { - 'bookmark' : true, - 'layout' : false, - 'options' : false - }, - "userButtons": [ - /* Ordinary link */ - { "label": "Link", - "attributes": { - "href": "http://example.com", - "id": "test-button" - } - }, - /* Sublists */ - {"label": "Sublist", - "attributes": {"id": "sublist"}, - "sublist": [ - {"label": "One", - "attributes": {"id": "sl-one"}}, - {"label": "Two", - "attributes": {"id": "sl-two"}}] - } - ], - "userLogo": { - "label": "Logo", - "attributes": {"id": "logo"} - } - }; - - this.viewerDiv = jQuery('<div>'); - this.eventEmitter = new Mirador.EventEmitter(); - this.mainMenu = new Mirador.MainMenu({ - state: new Mirador.SaveController({"mainMenuSettings": mainMenuSettings, eventEmitter: this.eventEmitter}), - eventEmitter: this.eventEmitter, - appendTo: this.viewerDiv, - mainMenuBarCls: 'menu-bar' - }); - }); - - it('creates regular buttons', function () { - var button = this.viewerDiv.find('ul.user-buttons > li > a#test-button'); - expect(button).toExist; - expect(button.text()).toBe("Link"); - expect(button.attr('href')).toBe("http://example.com"); - expect(button.attr('id')).toBe('test-button'); - }); - - it('creates sublists', function () { - expect(this.viewerDiv.find('ul.user-buttons > li > #sublist')).toExist(); - expect(this.viewerDiv.find('ul.user-buttons > li > #sublist + ul > li > #sl-one')).toExist(); - expect(this.viewerDiv.find('ul.user-buttons > li > #sublist + ul > li > #sl-two')).toExist(); - }); - - it('creates userLogo', function () { - expect(this.viewerDiv.find('ul.user-logo > li > a#logo').text()).toBe('Logo'); - }); - }); - -}); diff --git a/spec/viewer/manifestListItem.test.js b/spec/viewer/manifestListItem.test.js deleted file mode 100644 index 6a00a813c66dfcc347b939ffb91c5c9bafe6bc60..0000000000000000000000000000000000000000 --- a/spec/viewer/manifestListItem.test.js +++ /dev/null @@ -1,225 +0,0 @@ -describe('ManifestListItem', function () { - - beforeEach(function() { - this.eventEmitter = new Mirador.EventEmitter(); - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.dummyManifestContent = getJSONFixture('dummyManifest.json'); - this.manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - this.appendTo = jQuery('<ul>'+ - '<li data-index-number="-1"></li>'+ - '<li data-index-number="1"></li>'+ - '<li data-index-number="5"></li>'+ - '<li data-index-number="8"></li>'+ - '<li data-index-number="13"></li>'+ - '<li data-index-number="14"></li>'+ - '<li data-index-number="16"></li>'+ - '</ul>'); - }); - - it('insert index 0', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book1/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"} - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="0"] img'); - - var ids = []; - jQuery(html).find('li').each(function(i, el){ - ids.push(jQuery(this).data('index-number')); - }); - - expect(ids).toEqual([-1, 0, 1, 5, 8, 13, 14, 16]); - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - it('insert index 2', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book1/manifest"} - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="2"] img'); - var ids = []; - jQuery(html).find('li').each(function(i, el){ - ids.push(jQuery(this).data('index-number')); - }); - - expect(ids).toEqual([-1, 1, 2, 5, 8, 13, 14, 16]); - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - it('insert index 6', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book4/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book5/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book6/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book7/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book1/manifest"} - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="6"] img'); - var ids = []; - jQuery(html).find('li').each(function(i, el){ - ids.push(jQuery(this).data('index-number')); - }); - - expect(ids).toEqual([-1, 1, 5, 6, 8, 13, 14, 16]); - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - it('insert index 17', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book4/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book5/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book6/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book7/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book8/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book9/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book10/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book11/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book12/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book13/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book14/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book15/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book16/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book17/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book18/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book1/manifest"} - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="17"] img'); - - var ids = []; - jQuery(html).find('li').each(function(i, el){ - ids.push(jQuery(this).data('index-number')); - }); - - expect(ids).toEqual([-1, 1, 5, 8, 13, 14, 16, 17]); - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - it('insert another at index -1', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"} - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="-1"] img'); - - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - it('insert at a forced position', function() { - var listItem = new Mirador.ManifestListItem({ - appendTo: this.appendTo, - state: new Mirador.SaveController({ - eventEmitter:this.eventEmitter, - preserveManifestOrder: true, - data: [ - { "manifestUri": "http://www.example.org/iiif/book1/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book2/manifest"}, - { "manifestUri": "http://www.example.org/iiif/book3/manifest"}, - { "manifestUri": this.manifest.uri}, - ] - }), - eventEmitter: this.eventEmitter, - resultsWidth: 500, - forcedIndex: 0, - manifest: this.manifest - }); - - var html = jQuery.parseHTML(this.appendTo[0].outerHTML); - var testImage = jQuery(html).find('li[data-index-number="0"] img'); - - var ids = []; - jQuery(html).find('li').each(function(i, el){ - ids.push(jQuery(this).data('index-number')); - }); - - expect(ids).toEqual([-1, 0, 1, 5, 8, 13, 14, 16]); - expect(testImage).toHaveData('image-id', 'http://www.example.org/iiif/book1/canvas/p1'); - - }); - - xit('fetchTplData', function () { - }); - xit('render', function () { - }); - xit('listenForActions', function () { - }); - xit('bindEvents', function () { - }); - xit('updateDisplay', function () { - }); - xit('hide', function () { - }); - xit('show', function () { - }); -}); diff --git a/spec/viewer/manifestsPanel.test.js b/spec/viewer/manifestsPanel.test.js deleted file mode 100644 index cee51338b71f36a855ff4f1c705f1f0876f3898e..0000000000000000000000000000000000000000 --- a/spec/viewer/manifestsPanel.test.js +++ /dev/null @@ -1,157 +0,0 @@ -describe('ManifestsPanel', function() { - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.dummyManifestContent = getJSONFixture('dummyManifest.json'); - this.viewerDiv = jQuery('<div>'); - this.eventEmitter = new Mirador.EventEmitter(); - this.panel = new Mirador.ManifestsPanel({ - appendTo: this.viewerDiv, - state: new Mirador.SaveController({eventEmitter: this.eventEmitter}), - eventEmitter: this.eventEmitter - }) - }); - - it('should initialize itself', function() { - expect(this.panel).toBeDefined(); - }); - - it('should listen for actions', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - var collection = new Mirador.Collection(null, 'Dummy Location', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization" - }); - spyOn(this.panel, 'onPanelVisible'); - spyOn(this.panel, 'onManifestReceived'); - spyOn(this.panel, 'onCollectionReceived'); - this.eventEmitter.publish('manifestsPanelVisible.set'); - this.eventEmitter.publish('manifestReceived', manifest); - this.eventEmitter.publish('collectionReceived', collection, "http://example.org/iiif/collection/top") - expect(this.panel.onPanelVisible).toHaveBeenCalled(); - expect(this.panel.onManifestReceived).toHaveBeenCalled(); - expect(this.panel.onCollectionReceived).toHaveBeenCalled(); - }); - - it('should bind events', function() { - var element = this.panel.element; - - spyOn(this.panel, 'addManifestUrl'); - element.find('form#url-load-form').trigger('submit'); - expect(this.panel.addManifestUrl).toHaveBeenCalled(); - - spyOn(this.panel, 'togglePanel'); - element.find('.remove-object-option').trigger('click'); - expect(this.panel.togglePanel).toHaveBeenCalled(); - - spyOn(this.panel, 'filterManifests'); - element.find('#manifest-search').trigger('keyup'); - expect(this.panel.filterManifests).toHaveBeenCalled(); - - spyOn(jQuery.Event.prototype, 'preventDefault').and.callThrough(); - expect(jQuery.Event.prototype.preventDefault).not.toHaveBeenCalled(); - element.find('#manifest-search-form').submit(); - expect(jQuery.Event.prototype.preventDefault).toHaveBeenCalled(); - - spyOn(this.panel, 'resizePanel'); - jQuery(window).trigger('resize'); - expect(this.panel.resizePanel).toHaveBeenCalled(); - }); - - ['hide', 'show'].forEach(function(action) { - it('should ' + action, function() { - spyOn(jQuery.fn, action); - this.panel[action](); - expect(jQuery.fn[action]).toHaveBeenCalled(); - }); - }); - - it('should add manifest from url', function() { - spyOn(this.eventEmitter, 'publish'); - var url = "http://example.com/manifest.json"; - this.panel.addManifestUrl(url); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [url, "(Added from URL)"]); - }); - - it('should toggle load window', function() { - spyOn(this.eventEmitter, 'publish'); - this.panel.togglePanel(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('TOGGLE_LOAD_WINDOW'); - }); - - it('should filter manifests', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - var searchText = this.dummyManifestContent.label - var item = null; - - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(1); - - item = this.panel.element.find('.items-listing li:first'); - expect(item.length).toBe(1); - - this.panel.filterManifests(searchText); - expect(item.css('display')).not.toBe('none'); - - this.panel.filterManifests("XXX"); - expect(item.css('display')).toBe('none'); - - this.panel.filterManifests(""); - expect(item.css('display')).not.toBe('none'); - }); - - it('should set panel visibility', function() { - spyOn(this.panel, 'show'); - spyOn(this.panel, 'hide'); - - this.panel.onPanelVisible(null, true); - expect(this.panel.show).toHaveBeenCalled(); - expect(this.panel.hide).not.toHaveBeenCalled(); - - this.panel.show.calls.reset(); - this.panel.hide.calls.reset(); - - this.panel.onPanelVisible(null, false); - expect(this.panel.show).not.toHaveBeenCalled(); - expect(this.panel.hide).toHaveBeenCalled(); - }); - - it('should resize', function() { - spyOn(this.eventEmitter, 'publish'); - this.panel.resizePanel(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('manifestPanelWidthChanged', this.panel.resultsWidth); - }); - - it('should receive a new manifest', function() { - var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent); - expect(this.panel.manifestListItems.length).toBe(0); - this.panel.onManifestReceived(null, manifest); - expect(this.panel.manifestListItems.length).toBe(1); - }); - - it('should receive a collection and grab its manifests', function() { - spyOn(this.eventEmitter, 'publish'); - var collection = new Mirador.Collection(null, 'Digital Library @ Villanova', { - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": "http://example.org/iiif/collection/top", - "@type": "sc:Collection", - "label": "Top Level Collection for Example Organization", - "manifests": [ - { - "label": "The 'Adventurer's Oaths' from the Cardboard Drama of Esmeralda Grande", - "@id": "https://digital.library.villanova.edu/Item/vudl:2176/Manifest", - "@type": "sc:Manifest" - }, - { - "label": "The Adventures of Seumas Beg The Visit From Abroad", - "@id": "https://digital.library.villanova.edu/Item/vudl:2112/Manifest", - "@type": "sc:Manifest" - } - ] - }); - this.panel.onCollectionReceived(null, collection); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', ["https://digital.library.villanova.edu/Item/vudl:2176/Manifest", "Digital Library @ Villanova"]); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', ["https://digital.library.villanova.edu/Item/vudl:2112/Manifest", "Digital Library @ Villanova"]); - }) -}); \ No newline at end of file diff --git a/spec/viewer/workspacePanel.test.js b/spec/viewer/workspacePanel.test.js deleted file mode 100644 index 5bf2149eeb9a37463e0455ea3b3f1a61bf86cd69..0000000000000000000000000000000000000000 --- a/spec/viewer/workspacePanel.test.js +++ /dev/null @@ -1,124 +0,0 @@ -describe('WorkspacePanel', function() { - var workspacePanelSettings = { - maxColumns: 3, - maxRows: 5, - buildPath: '/', - imagesPath: 'images/' - }; - - beforeEach(function() { - this.eventEmitter = new Mirador.EventEmitter(); - this.viewerDiv = jQuery('<div>'); - this.workspace = { - setLayout: jasmine.createSpy() - }; - this.panel = new Mirador.WorkspacePanel({ - appendTo: this.viewerDiv, - workspace: this.workspace, - state: new Mirador.SaveController({"workspacePanelSettings": workspacePanelSettings, eventEmitter: this.eventEmitter}), - eventEmitter: this.eventEmitter - }); - }); - - it('should render the correct grid size given maxColumns and maxRows', function() { - var gridSize = workspacePanelSettings.maxRows * workspacePanelSettings.maxColumns; - expect(this.viewerDiv.find('.select-grid .grid-item').length).toBe(gridSize); - }); - - it('should listen for actions', function() { - spyOn(this.panel, 'onPanelVisible'); - this.eventEmitter.publish('workspacePanelVisible'); - expect(this.panel.onPanelVisible).toHaveBeenCalled(); - }); - - it('can detect layout selected', function() { - var gridItem = this.viewerDiv.find('.grid-item').first(); - var gridString = gridItem.data('gridstring'); - spyOn(this.panel, 'select'); - gridItem.trigger('click'); - expect(this.panel.select).toHaveBeenCalledWith(gridString); - }); - - it('can detect layout hover', function() { - var gridItem = this.viewerDiv.find('.grid-item').first(); - var gridString = gridItem.data('gridstring'); - spyOn(this.panel, 'hover'); - gridItem.trigger('mouseenter'); - expect(this.panel.hover).toHaveBeenCalledWith(gridString); - }); - - it('can detect layout mouseout', function() { - var selectGrid = this.viewerDiv.find('.select-grid'); - spyOn(this.panel, 'reset'); - selectGrid.trigger('mouseout'); - expect(this.panel.reset).toHaveBeenCalledWith(); - }); - - it('can reset itself', function() { - var el = this.panel.element; - this.panel.reset(); - expect(el.find('.grid-text').css('display')).toBe('none'); - expect(el.find('.grid-instructions').css('display')).not.toBe('none'); - expect(el.find('.grid-item.hovered').length).toBe(0); - }); - - it('should display the grid selection when a layout is hovered', function() { - var rows = 2, cols = 2; - var gridString = rows+'x'+cols; - var el = this.panel.element; - this.panel.hover(gridString); - expect(el.find('.grid-instructions').css('display')).toBe('none'); - expect(el.find('.grid-text').text()).toContain(gridString); - expect(el.find('.grid-item.hovered').length).toBe(rows*cols); - }); - - it('should publish events when a layout is selected', function() { - var gridString = '2x2'; - var layoutDescription = Mirador.layoutDescriptionFromGridString(gridString); - spyOn(this.eventEmitter, 'publish'); - this.panel.select(gridString); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('RESET_WORKSPACE_LAYOUT', {layoutDescription: layoutDescription}); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('TOGGLE_WORKSPACE_PANEL'); - }); - - it('should render the grid', function() { - var maxRows = workspacePanelSettings.maxRows; - var maxColumns = workspacePanelSettings.maxColumns; - var maxGridString = maxRows + 'x' + maxColumns; - expect(this.viewerDiv.find('#workspace-select-menu')).toExist(); - expect(this.viewerDiv.find('.select-grid .grid-row')).toExist(); - expect(this.viewerDiv.find('.select-grid .grid-row > .grid-item')).toExist(); - - var gridItems = this.viewerDiv.find('.grid-item'); - expect(gridItems.length).toBe(maxRows * maxColumns); - expect(jQuery(gridItems[gridItems.length - 1]).data('gridstring')).toBe(maxGridString); - }); - - it('should set panel visibility', function() { - spyOn(this.panel, 'show'); - spyOn(this.panel, 'hide'); - - this.panel.onPanelVisible(null, true); - expect(this.panel.show).toHaveBeenCalled(); - expect(this.panel.hide).not.toHaveBeenCalled(); - - this.panel.show.calls.reset(); - this.panel.hide.calls.reset(); - - this.panel.onPanelVisible(null, false); - expect(this.panel.show).not.toHaveBeenCalled(); - expect(this.panel.hide).toHaveBeenCalled(); - }); - - ['hide', 'show'].forEach(function(action) { - it('should ' + action, function(done) { - spyOn(jQuery.fn, action).and.callThrough(); - this.panel[action](); - setTimeout(function() { - expect(jQuery.fn[action]).toHaveBeenCalled(); - done(); - }, 200); - }); - }); - -}); diff --git a/spec/widgets/annotationsLayer.test.js b/spec/widgets/annotationsLayer.test.js deleted file mode 100644 index 98fcdd529e372e26ce96ab33852dee4b178338ae..0000000000000000000000000000000000000000 --- a/spec/widgets/annotationsLayer.test.js +++ /dev/null @@ -1,48 +0,0 @@ -describe('AnnotationsLayer', function() { - - beforeEach(function() { - - }); - - afterEach(function() { - - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('listenForActions', function() { - - }); - - xdescribe('bindEvents', function() { - - }); - - xdescribe('createRenderer', function() { - - }); - - xdescribe('updateRenderer', function() { - - }); - - xdescribe('modeSwitch', function() { - - }); - - xdescribe('enterDisplayAnnotations', function() { - - }); - - xdescribe('enterEditAnnotations', function() { - - }); - - xdescribe('enterDefault', function() { - - }); -}); diff --git a/spec/widgets/annotationsTab.test.js b/spec/widgets/annotationsTab.test.js deleted file mode 100644 index a00c947fcdd1eb4321494dff97f216554b90644f..0000000000000000000000000000000000000000 --- a/spec/widgets/annotationsTab.test.js +++ /dev/null @@ -1,199 +0,0 @@ -describe('AnnotationsTab', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.element = document.createElement('div', { - class: 'tab-container', - id: 'annotationsTab' - }); - this.eventEmitter = new Mirador.EventEmitter(); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.imagesList = this.manifest.getCanvases(); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.annotationLists - this.annotationsTab = new Mirador.AnnotationsTab({ - manifest: this.manifest, - appendTo: this.element, - visible: true, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList - }); - subject = this.annotationsTab; - }); - - afterEach(function() { - delete this.annotationssTab; - }); - - describe('localState', function() { - var target_state = { - id: 'annotationsTab', - visible: true, - additional_key: true - }; - it('should return the state as-is when given no arguments', function() { - expect(subject.localState()).toEqual(subject.annoTabState); - expect(subject.localState()).not.toEqual(target_state); - }); - it('should set and return the new state when given arguments', function() { - expect(subject.localState(target_state, true)).toEqual(target_state); - expect(subject.localState()).toEqual(target_state); - }); - it('should publish a annotationsTabStateUpdated event on non-initial setup', function() { - spyOn(this.eventEmitter, 'publish'); - expect(subject.localState(target_state, false)).toEqual(target_state); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('annotationsTabStateUpdated.' + this.windowId, target_state); - expect(subject.localState()).toEqual(target_state); - }); - }); - - describe('tabStateUpdated', function() { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish'); - }); - it('should set visible in the local state', function() { - jQuery.each([false, true], function(k, visible) { - subject.tabStateUpdated(visible); - expect(subject.localState().visible).toEqual(visible); - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - }); - - describe('annotationListLoaded', function() { - beforeEach(function() { - subject.state = { - getWindowAnnotationsList: jasmine.createSpy('getWindowAnnotationsList').and.returnValue([ - { endpoint: 'dummy' }, - { endpoint: 'dummyUrl' }, - { endpoint: { name: 'endpointName' }} - ]) - }; - }); - it('should correctly set local state', function() { - subject.annotationListLoaded(); - expect(subject.localState().annotationLists[0]).toEqual(jasmine.objectContaining({ selected: false })); - // expect(subject.localState().annotationLists[1]).toEqual(jasmine.objectContaining({ selected: false })); - }); - }); - - describe('List selection', function() { - var dummyState; - beforeEach(function() { - dummyState = { - selectedList: null, - focusedList: null, - annotationLists: [ - { annotationSource: 'boo', selected: false }, - { annotationSource: 'hoo', selected: false } - ] - }; - spyOn(subject, 'localState').and.callFake(function(arg) { - if (!arguments.length) return dummyState; else dummyState=arg; - }); - }); - it('should deselect a list', function() { - dummyState.selectedList = 'boo'; - dummyState.annotationLists[0].selected = true; - subject.deselectList('boo'); - expect(dummyState.selectedList).toBe(null); - expect(dummyState.annotationLists[0].selected).toBe(false); - expect(dummyState.annotationLists[1].selected).toBe(false); - }); - it('should select a list', function() { - subject.selectList('hoo'); - expect(dummyState.selectedList).toBe('hoo'); - expect(dummyState.annotationLists[0].selected).toBe(false); - expect(dummyState.annotationLists[1].selected).toBe(true); - }); - it('should focus a list', function() { - subject.focusList('hoo'); - expect(dummyState.focusedList).toBe('hoo'); - expect(dummyState.annotationLists[0].focused).toBe(false); - expect(dummyState.annotationLists[1].focused).toBe(true); - }); - }); - - xdescribe('toggle', function() { - - }); - - describe('listenForActions', function() { - it('should run tabStateUpdated upon getting a tabStateUpdated event', function() { - var data = { - selectedTabIndex: 0, - tabs: [ - { - options: { - id: 'annotationsTab' - } - }, - { - options: { - id: 'someOtherTab' - } - } - ] - }; - spyOn(subject, 'tabStateUpdated'); - subject.eventEmitter.publish('tabStateUpdated.' + this.windowId, data); - expect(subject.tabStateUpdated).toHaveBeenCalledWith(true); - }); - it('should rerender upon getting a annotationsTabStateUpdated event', function() { - var data = { visible: false }; - spyOn(subject, 'render'); - subject.eventEmitter.publish('annotationsTabStateUpdated.' + this.windowId, data); - expect(subject.render).toHaveBeenCalledWith(data); - }) - it('should run annotationListLoaded upon getting an annotationListLoaded event', function() { - spyOn(subject, 'annotationListLoaded'); - subject.eventEmitter.publish('annotationListLoaded.' + this.windowId, {}); - expect(subject.annotationListLoaded).toHaveBeenCalled(); - }); - it('should run selectList upon getting a currentCanvasIDUpdated or listSelected event', function() { - spyOn(subject, 'selectList'); - jQuery.each(['currentCanvasIDUpdated.', 'listSelected.'], function(_, ev) { - subject.eventEmitter.publish(ev + subject.windowId, {}); - expect(subject.selectList).toHaveBeenCalled(); - subject.selectList.calls.reset(); - }); - }); - it('should run deselectList upon getting a listDeselected event', function() { - spyOn(subject, 'deselectList'); - subject.eventEmitter.publish('listDeselected.' + this.windowId, 'sampleListId'); - expect(subject.deselectList).toHaveBeenCalledWith('sampleListId'); - }); - }); - - describe('bindEvents', function() { - beforeEach(function() { - $('<span class="annotationListItem">waahoo1</span>').data('id', 'glub1').appendTo(subject.element); - $('<span class="annotationListItem">waahoo2</span>').data('id', 'glub2').appendTo(subject.element); - spyOn(this.eventEmitter, 'publish'); - subject.bindEvents(); - }); - // it('should deselect a selected item when re-clicked', function() { - // subject.localState({ selectedList: 'glub1' }); - // subject.element.find('.annotationListItem').first().click(); - // expect(this.eventEmitter.publish).toHaveBeenCalledWith('listDeselected.' + this.windowId, 'glub1'); - // }); - // it('should select an unselected item when clicked', function() { - // subject.localState({ selectedList: 'glub2' }); - // subject.element.find('.annotationListItem').first().click(); - // expect(this.eventEmitter.publish).toHaveBeenCalledWith('listSelected.' + this.windowId, 'glub1'); - // }); - }); - - describe('render', function() { - it('should hide itself if not visible', function() { - spyOn(jQuery.fn, 'hide'); - subject.render({ visible: false }); - expect(subject.element.hide).toHaveBeenCalled(); - }); - }); -}); diff --git a/spec/widgets/bookView.test.js b/spec/widgets/bookView.test.js deleted file mode 100644 index 3e4026e3dc3572b689ec6ca17e184c07192a0336..0000000000000000000000000000000000000000 --- a/spec/widgets/bookView.test.js +++ /dev/null @@ -1,588 +0,0 @@ -describe('BookView', function() { - var subject; - var viewportBounds = new OpenSeadragon.Rect( - -0.03149220690309984, - -1.1102230246251565e-16, - 1.0629844138061997, - 1.3985897967648282, - 0 - ); - var imageBounds = new OpenSeadragon.Rect( - -75.92771084337372, - -2.6767477123712524e-13, - 2562.8554216867474, - 3372.000000000001, - 0 - ); - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.viewContainer = document.createElement('div', { - class: 'view-container' - }); - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.appendTo = this.viewContainer; - this.eventEmitter = new Mirador.EventEmitter; - this.imagesList = this.manifest.getCanvases(); - this.canvasControls = jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS.windowSettings.canvasControls - ); - this.state = state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: this.eventEmitter} - )); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.bookView = new Mirador.BookView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.bookView; - }); - - afterEach(function() { - delete this.bookView; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() to run - }); - it('should initialize with a specified canvas ID', function() { - this.bookView = new Mirador.BookView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - canvasID: this.imagesList[2]['@id'] - }); - subject = this.bookView; - expect(subject.currentImgIndex).toEqual(2); - }); - it('should initialize with null osdOptions', function() { - this.bookView = new Mirador.BookView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - canvasID: this.imagesList[2]['@id'], - osdOptions: null - }); - subject = this.bookView; - expect(subject.currentImgIndex).toEqual(2); - }); - it('should initialize with bottom panel disabled', function() { - spyOn(this.eventEmitter, 'publish'); - this.bookView = new Mirador.BookView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: false, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.bookView; - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, false); - }); - }); - - describe('listenForActions', function() { - describe('Bottom panel', function() { - var dodger_bottom_panel, dodger_zoom, arrow_next, arrow_prev; - beforeEach(function() { - dodger_bottom_panel = subject.element.find('.mirador-osd-toggle-bottom-panel'); - dodger_zoom = subject.element.find('.mirador-pan-zoom-controls'); - arrow_next = subject.element.find('.mirador-osd-next'); - arrow_prev = subject.element.find('.mirador-osd-previous'); - }); - it('should adjust canvas controls to accommodate bottom panel height', function() { - subject.eventEmitter.publish('bottomPanelSet.' + this.windowId, true); - expect(dodger_bottom_panel).toHaveClass('bottom-panel-open'); - expect(dodger_zoom).toHaveClass('bottom-panel-open'); - expect(arrow_next).toHaveClass('bottom-panel-open'); - expect(arrow_prev).toHaveClass('bottom-panel-open'); - }); - it('should adjust canvas controls to accommodate the absence of the bottom panel', function() { - subject.eventEmitter.publish('bottomPanelSet.' + this.windowId, false); - expect(dodger_bottom_panel).not.toHaveClass('bottom-panel-open'); - expect(dodger_zoom).not.toHaveClass('bottom-panel-open'); - expect(arrow_next).not.toHaveClass('bottom-panel-open'); - expect(arrow_prev).not.toHaveClass('bottom-panel-open'); - }); - }); - describe('fitBounds', function() { - beforeEach(function() { - subject.osd = { - viewport: { - imageToViewportRectangle: jasmine.createSpy('imageToViewportRectangle').and.returnValue(new OpenSeadragon.Rect(1, 2, 640, 480, 0)), - fitBoundsWithConstraints: jasmine.createSpy('fitBoundsWithConstraints') - } - }; - }); - it('should call fitBoundsWithConstraints', function() { - subject.eventEmitter.publish('fitBounds.' + this.windowId, imageBounds); - expect(subject.osd.viewport.fitBoundsWithConstraints).toHaveBeenCalled(); - }); - }); - describe('Changing canvases', function() { - var navs; - beforeEach(function() { - navs = { - prev: subject.element.find('.mirador-osd-previous'), - next: subject.element.find('.mirador-osd-next') - } - spyOn(subject.element, 'find').and.callFake(function(sel) { - switch (sel) { - case '.mirador-osd-previous': return navs.prev; - case '.mirador-osd-next': return navs.next; - } - }); - for (k in navs) { - spyOn(navs[k], 'show'); - spyOn(navs[k], 'hide'); - } - }); - it('should hide the previous button upon going to the first canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[0]['@id']); - expect(navs.prev.hide).toHaveBeenCalled(); - expect(navs.prev.show).not.toHaveBeenCalled(); - expect(navs.next.hide).not.toHaveBeenCalled(); - expect(navs.next.show).toHaveBeenCalled(); - }); - it('should hide the next button upon going to the last canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[this.imagesList.length-1]['@id']); - expect(navs.prev.hide).not.toHaveBeenCalled(); - expect(navs.prev.show).toHaveBeenCalled(); - expect(navs.next.hide).toHaveBeenCalled(); - expect(navs.next.show).not.toHaveBeenCalled(); - }); - it('should show both buttons upon going to any middle canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[1]['@id']); - expect(navs.prev.hide).not.toHaveBeenCalled(); - expect(navs.prev.show).toHaveBeenCalled(); - expect(navs.next.hide).not.toHaveBeenCalled(); - expect(navs.next.show).toHaveBeenCalled(); - }); - }); - }); - - describe('bindEvents', function() { - it('should respond to clicks on next', function() { - spyOn(subject, 'next'); - subject.element.find('.mirador-osd-next').click(); - expect(subject.next).toHaveBeenCalled(); - }); - - it('should respond to clicks on previous', function() { - spyOn(subject, 'previous'); - subject.element.find('.mirador-osd-previous').click(); - expect(subject.previous).toHaveBeenCalled(); - }); - - it('should respond to clicks on home', function() { - subject.osd = { - viewport: { - goHome: jasmine.createSpy() - } - }; - subject.element.find('.mirador-osd-go-home').click(); - expect(subject.osd.viewport.goHome).toHaveBeenCalled(); - }); - - it('should toggle bottom panel', function() { - spyOn(subject.eventEmitter, 'publish'); - subject.element.find('.mirador-osd-toggle-bottom-panel').click(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('TOGGLE_BOTTOM_PANEL_VISIBILITY.' + this.windowId); - }); - - describe('direction buttons', function() { - var panPoint = new OpenSeadragon.Point(1, 2); - beforeEach(function() { - spyOn(subject, 'getPanByValue').and.returnValue(panPoint); - subject.osd = { - viewport: jasmine.createSpyObj('viewport', ['panBy', 'applyConstraints']) - }; - }); - it('should respond to clicks on up', function() { - subject.element.find('.mirador-osd-up').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(0, -2)); - }); - it('should respond to clicks on down', function() { - subject.element.find('.mirador-osd-down').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(0, 2)); - }); - it('should respond to clicks on left', function() { - subject.element.find('.mirador-osd-left').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(-1, 0)); - }); - it('should respond to clicks on right', function() { - subject.element.find('.mirador-osd-right').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(1, 0)); - }); - }); - - describe('zoom buttons', function() { - beforeEach(function() { - subject.osd = { - zoomPerClick: 2, - viewport: jasmine.createSpyObj('viewport', ['zoomBy', 'applyConstraints']) - }; - }); - it('should respond to clicks on zoom in', function() { - subject.element.find('.mirador-osd-zoom-in').click(); - expect(subject.osd.viewport.zoomBy).toHaveBeenCalledWith(2); - }); - it('should respond to clicks on zoom out', function() { - subject.element.find('.mirador-osd-zoom-out').click(); - expect(subject.osd.viewport.zoomBy).toHaveBeenCalledWith(1/2); - }); - }); - }); - - describe('getPanByValue', function() { - var viewportBounds = { - degrees: 0, - height: 1.3985897967648282, - width: 1.0629844138061997, - x: -0.03149220690309984, - y: -1.1102230246251565e-16 - }; - beforeEach(function() { - subject.osd = { - viewport: { - getBounds: function(b) { - return viewportBounds; - } - } - } - }); - it('should return half height and width', function() { - expect(subject.getPanByValue().x).toBeCloseTo(viewportBounds.width/2 , 2); - expect(subject.getPanByValue().y).toBeCloseTo(viewportBounds.height/2 , 2); - }); - }); - - describe('setBounds', function() { - var viewportBounds = { - degrees: 0, - height: 1.3985897967648282, - width: 1.0629844138061997, - x: -0.03149220690309984, - y: -1.1102230246251565e-16 - }; - var imageBounds = { - degrees: 0, - height: 3372.000000000001, - width: 2562.8554216867474, - x: -75.92771084337372, - y: -2.6767477123712524e-13 - }; - beforeEach(function() { - subject.osdOptions = { - osdBounds: { - degrees: 0, - height: 1, - width: 1, - x: -0.5, - y: -0.5 - } - }; - subject.osd = { - viewport: { - getBounds: function(b) { - return viewportBounds; - }, - viewportToImageRectangle: function(ob) { - return imageBounds; - } - } - }; - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should update osdOptions and the viewport', function() { - subject.setBounds(); - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - - describe('toggle', function() { - beforeEach(function() { - spyOn(subject, 'show'); - spyOn(subject, 'hide'); - }); - it('should call show for true', function() { - subject.toggle(true); - expect(subject.show).toHaveBeenCalled(); - expect(subject.hide).not.toHaveBeenCalled(); - }); - it('should call hide for false', function() { - subject.toggle(false); - expect(subject.show).not.toHaveBeenCalled(); - expect(subject.hide).toHaveBeenCalled(); - }); - }); - - describe('hide', function() { - beforeEach(function() { - spyOn(jQuery.prototype, 'hide').and.stub(); - }); - it('should hide', function() { - subject.hide(); - expect(jQuery.prototype.hide).toHaveBeenCalled(); - }); - }); - - describe('show', function() { - beforeEach(function() { - spyOn(jQuery.prototype, 'show').and.stub(); - }); - it('should hide', function() { - subject.show(); - expect(jQuery.prototype.show).toHaveBeenCalled(); - }); - }); - - describe('adjustWidth', function() { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should publish REMOVE_CLASS event when hasClass is true', function() { - subject.adjustWidth('xekko', true); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_CLASS.'+this.windowId, 'xekko'); - }); - it('should publish ADD_CLASS event when hasClass is false', function() { - subject.adjustWidth('xekko', false); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_CLASS.'+this.windowId, 'xekko'); - }); - }); - - describe('adjustHeight', function() { - it('should remove class when hasClass is true', function() { - subject.element.addClass('xekko'); - subject.adjustHeight('xekko', true); - expect(subject.element.hasClass('xekko')).toBe(false); - }); - it('should add class when hasClass is false', function() { - subject.element.removeClass('xekko'); - subject.adjustHeight('xekko', false); - expect(subject.element.hasClass('xekko')).toBe(true); - }); - }); - - describe('updateImage', function() { - beforeEach(function() { - subject.canvasId = this.imagesList[0]['@id']; - spyOn(subject.eventEmitter, 'publish'); - }); - describe('Different from original', function() { - beforeEach(function() { - subject.osd = { - close: function() {} - }; - spyOn(subject.osd, 'close'); - subject.updateImage(this.imagesList[1]['@id']); - }); - it('should fire event', function() { - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - it('should close Openseadragon', function() { - expect(subject.osd.close).toHaveBeenCalled(); - }); - }); - describe('Same as original', function() { - beforeEach(function() { - subject.osd = { - close: function() {} - }; - spyOn(subject.osd, 'close'); - subject.updateImage(this.imagesList[0]['@id']); - }); - it('should fire event', function() { - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - }); - - // TODO: Fix openseadragon crash - xdescribe('createOpenSeadragonInstance', function() { - - }); - - describe('next', function() { - beforeEach(function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - }); - it('should move one canvas forward on non-last canvases', function() { - subject.currentImgIndex = 0; - subject.next(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[1]['@id']); - }); - it('should stay on last canvas', function() { - subject.currentImgIndex = this.imagesList.length-1; - subject.next(); - expect(this.eventEmitter.publish).not.toHaveBeenCalled(); - }); - }); - - describe('previous', function() { - beforeEach(function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - }); - it('should move one canvas back on non-first canvases', function() { - subject.currentImgIndex = 1; - subject.previous(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[0]['@id']); - }); - it('should stay on first canvas', function() { - subject.currentImgIndex = 0; - subject.previous(); - expect(this.eventEmitter.publish).not.toHaveBeenCalled(); - }); - }); - - describe('addLayer', function() { - var dummyTileSource = [ - {height: 2000, width: 1000}, - {height: 100, width: 200} - ]; - beforeEach(function() { - subject.osd = jasmine.createSpyObj('osd', ['addTiledImage']); - }); - it('adds the right layers', function() { - subject.addLayer(dummyTileSource, 2); - expect(subject.osd.addTiledImage).toHaveBeenCalledWith({ - tileSource: {height: 2000, width: 1000}, - opacity: 1, - x: 1.01, - y: 0, - width: 1 - }); - expect(subject.osd.addTiledImage).toHaveBeenCalledWith({ - tileSource: {height: 100, width: 200}, - opacity: 1, - x: 1.01, - y: 0, - width: 4 - }); - }); - }); - - describe('getStitchList', function() { - it('should return a single entry for individual viewing hint', function() { - subject.currentImgIndex = 4; - subject.viewingHint = 'individuals'; - subject.currentImg = this.imagesList[subject.currentImgIndex]; - expect(subject.getStitchList()).toEqual([this.imagesList[4]]); - }); - describe('Even pages', function() { - beforeEach(function() { - subject.currentImgIndex = 4; - subject.viewingHint = 'paged'; - subject.currentImg = this.imagesList[subject.currentImgIndex]; - }); - it('stitches left-to-right', function() { - subject.viewingDirection = 'left-to-right'; - expect(subject.getStitchList()).toEqual([this.imagesList[3], this.imagesList[4]]); - }); - it('stitches right-to-left', function() { - subject.viewingDirection = 'right-to-left'; - expect(subject.getStitchList()).toEqual([this.imagesList[3], this.imagesList[4]]); - }); - it('stitches top-down', function() { - subject.viewingDirection = 'top-to-bottom'; - expect(subject.getStitchList()).toEqual([this.imagesList[3], this.imagesList[4]]); - }); - it('stitches bottom-up', function() { - subject.viewingDirection = 'bottom-to-top'; - expect(subject.getStitchList()).toEqual([this.imagesList[4], this.imagesList[3]]); - }); - }); - describe('Odd pages', function() { - beforeEach(function() { - subject.currentImgIndex = 5; - subject.viewingHint = 'paged'; - subject.currentImg = this.imagesList[subject.currentImgIndex]; - }); - it('stitches left-to-right', function() { - subject.viewingDirection = 'left-to-right'; - expect(subject.getStitchList()).toEqual([this.imagesList[5], this.imagesList[6]]); - }); - it('stitches right-to-left', function() { - subject.viewingDirection = 'right-to-left'; - expect(subject.getStitchList()).toEqual([this.imagesList[5], this.imagesList[6]]); - }); - it('stitches top-down', function() { - subject.viewingDirection = 'top-to-bottom'; - expect(subject.getStitchList()).toEqual([this.imagesList[5], this.imagesList[6]]); - }); - it('stitches bottom-up', function() { - subject.viewingDirection = 'bottom-to-top'; - expect(subject.getStitchList()).toEqual([this.imagesList[6], this.imagesList[5]]); - }); - }); - - describe('Order of imagesList', function() { - it('should be reversed for r-t-l sequences and manifests', function() { - - this.fixture.viewingDirection = "right-to-left"; - var manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ), - imagesList = manifest.getCanvases(), - imagesListLtr = imagesList.concat(), - imagesListRtl = imagesList.concat(); - imagesListRtl.reverse(); - var bookView = new Mirador.BookView({ - manifest: manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: imagesList, - imagesListLtr: imagesListLtr, - imagesListRtl: imagesListRtl, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - expect(imagesList[imagesList.length - 1]).toBe(bookView.imagesListRtl[0]); - }); - }); - // TODO: Fill this in once implemented - describe('Continuous viewing hint', function() { - beforeEach(function() { - subject.currentImgIndex = 4; - subject.viewingHint = 'continuous'; - subject.currentImg = this.imagesList[subject.currentImgIndex]; - }); - xit('needs real tests', function() { - expect(subject.getStitchList()).not.toThrowError(); - }); - }); - }); -}); diff --git a/spec/widgets/contextControls.test.js b/spec/widgets/contextControls.test.js deleted file mode 100644 index 1d7b1cb7a97f322f38c4bd9a80088b7ac82282f5..0000000000000000000000000000000000000000 --- a/spec/widgets/contextControls.test.js +++ /dev/null @@ -1,130 +0,0 @@ -describe('ContextControls', function() { - - beforeEach(function() { - - }); - - afterEach(function() { - - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('show', function() { - - }); - - xdescribe('hide', function() { - - }); - - xdescribe('bindEvents', function() { - - }); - - describe('Manipulation Controls', function() { - beforeAll(function(){ - this.container = jQuery('<div><div class="mirador-manipulation-controls"></div></div>'); - this.eventEmitter = new Mirador.EventEmitter; - this.state = state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: this.eventEmitter} - )); - this.canvasControls = { - "annotations" : { - "annotationLayer" : true, - "annotationCreation" : true, - "annotationState" : 'annoOff', - "annotationRefresh" : false - }, - "imageManipulation" : { - "manipulationLayer" : true, - "controls" : { - "rotate" : true, - "brightness" : true, - "contrast" : true, - "saturate" : true, - "grayscale" : true, - "invert" : true, - "mirror" : true - } - } - }; - jasmine.getFixtures().set(this.container); - }); - it('should add manipulation controls', function() { - spyOn(Mirador.ContextControls.prototype,'init'); - var contextControls = new Mirador.ContextControls({ - container:this.container, - availableAnnotationStylePickers:['StrokeType'], - canvasControls: this.canvasControls - }); - expect(contextControls.init).toHaveBeenCalled(); - // expect(contextControls.manipulationTemplate).toHaveBeenCalled(); - }); - it('shows configured tools', function() { - subject = new Mirador.ContextControls({ - container: this.container, - availableAnnotationStylePickers:['StrokeType'], - canvasControls: this.canvasControls, - state: this.state - }); - subject.manipulationShow(); - var availableClasses = [ - '.mirador-osd-rotate-right', '.mirador-osd-rotate-left', - '.mirador-osd-brightness', '.mirador-osd-contrast', - '.mirador-osd-saturation', '.mirador-osd-grayscale', - '.mirador-osd-invert', '.mirador-osd-mirror' - ]; - availableClasses.forEach(function(class_selector) { - // I could not get jasmine-jquery to work here. So going at it the old - // fashioned way - expect(subject.container.find(class_selector).length).toBe(1) - }); - - }); - }); - - describe('AnnotationStylePickers', function() { - - beforeAll(function(){ - this.container = jQuery('<div><div class="mirador-osd-annotation-controls"></div></div>'); - jasmine.getFixtures().set(this.container); - }); - - it('should add stroke picker',function(){ - spyOn(Mirador.ContextControls.prototype,'addStrokeStylePicker'); - var canvasControls = { - "annotations" : { - "annotationLayer" : true, - "annotationCreation" : true, - "annotationState" : 'annoOff', - "annotationRefresh" : false - }, - "imageManipulation" : { - "manipulationLayer" : true, - "controls" : { - "rotate" : true, - "brightness" : true, - "contrast" : true, - "saturate" : true, - "grayscale" : true, - "invert" : true - } - } - }; - var contextControls = new Mirador.ContextControls({ - container:this.container, - availableAnnotationStylePickers:['StrokeType'], - canvasControls: canvasControls - }); - - expect(contextControls.addStrokeStylePicker).toHaveBeenCalled(); - }); - - }); - -}); diff --git a/spec/widgets/hud.test.js b/spec/widgets/hud.test.js deleted file mode 100644 index 02f2a1a760c544895deb3e0d2f97ebf6c3e2bc0b..0000000000000000000000000000000000000000 --- a/spec/widgets/hud.test.js +++ /dev/null @@ -1,24 +0,0 @@ -describe('Hud', function() { - - beforeEach(function() { - - }); - - afterEach(function() { - - }); - - xdescribe('Initialization', function() { - it('should initialize', function() { - - }); - }); - - xdescribe('bindEvents', function() { - - }); - - xdescribe('createStateMachine', function() { - - }); -}); diff --git a/spec/widgets/imageView.test.js b/spec/widgets/imageView.test.js deleted file mode 100644 index 81ec322b8029166f38de2322e96bee50148a97b2..0000000000000000000000000000000000000000 --- a/spec/widgets/imageView.test.js +++ /dev/null @@ -1,709 +0,0 @@ -describe('ImageView', function() { - var subject; - var viewportBounds = new OpenSeadragon.Rect( - -0.03149220690309984, - -1.1102230246251565e-16, - 1.0629844138061997, - 1.3985897967648282, - 0 - ); - var imageBounds = new OpenSeadragon.Rect( - -75.92771084337372, - -2.6767477123712524e-13, - 2562.8554216867474, - 3372.000000000001, - 0 - ); - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - // WARNING: Need to stub to stop OpenSeadragon from crashing PhantomJS - // If you can make this not happen, remove this line and test the method - spyOn(Mirador.ImageView.prototype, 'initialiseImageCanvas'); - this.viewContainer = document.createElement('div', { - class: 'view-container' - }); - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.appendTo = this.viewContainer; - this.eventEmitter = new Mirador.EventEmitter; - this.imagesList = this.manifest.getCanvases(); - this.canvasControls = jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS.windowSettings.canvasControls - ); - this.state = state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: this.eventEmitter} - )); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.imageView = new Mirador.ImageView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - canvases: { - 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json': { - getVisibleImages: function() { return []; }, - getBounds: function() { - return { - 'x': 800, - 'y': 600, - 'width': 800, - 'height': 600 - }; - }, - show: function() { - } - }, - 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json': { - getVisibleImages: function() { return []; }, - getBounds: function() { - return { - 'x': 800, - 'y': 600, - 'width': 800, - 'height': 600 - }; - }, - show: function() { - } - } - } - }); - subject = this.imageView; - }); - - afterEach(function() { - delete this.imageView; - }); - // TODO: Fill in tests for what needs initializing - describe('Initialization', function() { - it('should initialize with above defaults', function() { - expect(true).toBe(true); //Force beforeEach() to run - }); - it('should initialize with a specified canvasID', function() { - this.imageView = new Mirador.ImageView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - canvasID: this.imagesList[1]['@id'], - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.imageView; - expect(subject.currentImgIndex).toEqual(1); - }); - it('should initialize with null osdOptions', function() { - this.imageView = new Mirador.ImageView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - canvasID: this.imagesList[1]['@id'], - osdOptions: null, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.imageView; - expect(subject.currentImgIndex).toEqual(1); - }); - it('should initialize with null osdOptions', function() { - spyOn(this.eventEmitter, 'publish'); - this.imageView = new Mirador.ImageView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - osdOptions: null, - state: this.state, - bottomPanelAvailable: false, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.imageView; - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_BOTTOM_PANEL_VISIBILITY.' + this.windowId, false); - }); - }); - - describe('listenForActions', function() { - describe('Bottom panel', function() { - var dodger_bottom_panel, dodger_zoom, arrow_next, arrow_prev; - beforeEach(function() { - dodger_bottom_panel = subject.element.find('.mirador-osd-toggle-bottom-panel'); - dodger_zoom = subject.element.find('.mirador-pan-zoom-controls'); - arrow_next = subject.element.find('.mirador-osd-next'); - arrow_prev = subject.element.find('.mirador-osd-previous'); - }); - it('should adjust canvas controls to accommodate bottom panel height', function() { - subject.eventEmitter.publish('bottomPanelSet.' + this.windowId, true); - expect(dodger_bottom_panel).toHaveClass('bottom-panel-open'); - expect(dodger_zoom).toHaveClass('bottom-panel-open'); - expect(arrow_next).toHaveClass('bottom-panel-open'); - expect(arrow_prev).toHaveClass('bottom-panel-open'); - }); - it('should adjust canvas controls to accommodate the absence of the bottom panel', function() { - subject.eventEmitter.publish('bottomPanelSet.' + this.windowId, false); - expect(dodger_bottom_panel).not.toHaveClass('bottom-panel-open'); - expect(dodger_zoom).not.toHaveClass('bottom-panel-open'); - expect(arrow_next).not.toHaveClass('bottom-panel-open'); - expect(arrow_prev).not.toHaveClass('bottom-panel-open'); - }); - }); - xdescribe('InitialiseImageCanvas', function() { - console.info(Object.keys(subject.osd)); - console.info(subject.osd.world.items.length); - expect(subject.osd.world.items.length>1).toBe(true); - }); - describe('fitBounds', function() { - beforeEach(function() { - subject.osd = { - viewport: { - imageToViewportRectangle: jasmine.createSpy('imageToViewportRectangle').and.returnValue(new OpenSeadragon.Rect(1, 2, 640, 480, 0)), - fitBoundsWithConstraints: jasmine.createSpy('fitBoundsWithConstraints') - } - }; - }); - it('should call fitBoundsWithConstraints', function() { - subject.eventEmitter.publish('fitBounds.' + this.windowId, imageBounds); - expect(subject.osd.viewport.fitBoundsWithConstraints).toHaveBeenCalled(); - }); - }); - describe('Changing canvases', function() { - var navs; - beforeEach(function() { - navs = { - prev: subject.element.find('.mirador-osd-previous'), - next: subject.element.find('.mirador-osd-next') - } - spyOn(subject.element, 'find').and.callFake(function(sel) { - switch (sel) { - case '.mirador-osd-previous': return navs.prev; - case '.mirador-osd-next': return navs.next; - } - }); - for (k in navs) { - spyOn(navs[k], 'show'); - spyOn(navs[k], 'hide'); - } - }); - it('should hide the previous button upon going to the first canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[0]['@id']); - expect(navs.prev.hide).toHaveBeenCalled(); - expect(navs.prev.show).not.toHaveBeenCalled(); - expect(navs.next.hide).not.toHaveBeenCalled(); - expect(navs.next.show).toHaveBeenCalled(); - }); - it('should hide the next button upon going to the last canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[this.imagesList.length-1]['@id']); - expect(navs.prev.hide).not.toHaveBeenCalled(); - expect(navs.prev.show).toHaveBeenCalled(); - expect(navs.next.hide).toHaveBeenCalled(); - expect(navs.next.show).not.toHaveBeenCalled(); - }); - it('should show both buttons upon going to any middle canvas', function() { - subject.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId, this.imagesList[1]['@id']); - expect(navs.prev.hide).not.toHaveBeenCalled(); - expect(navs.prev.show).toHaveBeenCalled(); - expect(navs.next.hide).not.toHaveBeenCalled(); - expect(navs.next.show).toHaveBeenCalled(); - }); - }); - describe('HUD_* events', function() { - var dummyElement; - beforeEach(function() { - subject.element.append('<div class="hudelement qblok"></div>'); - dummyElement = subject.element.find('.hudelement'); - spyOn(subject.element, 'find').and.callFake(function() { - return dummyElement; - }); - spyOn(dummyElement, 'removeClass').and.callThrough(); - spyOn(dummyElement, 'addClass').and.callThrough(); - spyOn(dummyElement, 'fadeIn'); - spyOn(dummyElement, 'fadeOut').and.callThrough(); - }); - it('responds to HUD_REMOVE_CLASS', function() { - subject.eventEmitter.publish('HUD_REMOVE_CLASS.' + this.windowId, ['.hudelement', 'qblok']); - expect(subject.element.find).toHaveBeenCalledWith('.hudelement'); - expect(dummyElement.removeClass).toHaveBeenCalledWith('qblok'); - expect(dummyElement.is('.qblok')).toBe(false); - }); - it('responds to HUD_ADD_CLASS', function() { - subject.eventEmitter.publish('HUD_ADD_CLASS.' + this.windowId, ['.hudelement', 'qblok2']); - expect(subject.element.find).toHaveBeenCalledWith('.hudelement'); - expect(dummyElement.addClass).toHaveBeenCalledWith('qblok2'); - expect(dummyElement.is('.qblok2')).toBe(true); - }); - it('responds to HUD_FADE_IN', function() { - subject.eventEmitter.publish('HUD_FADE_IN.' + this.windowId, ['.hudelement', 583]); - expect(subject.element.find).toHaveBeenCalledWith('.hudelement'); - expect(dummyElement.fadeIn).toHaveBeenCalledWith(583); - }); - it('responds to HUD_FADE_OUT', function(done) { - subject.eventEmitter.publish('HUD_FADE_OUT.' + this.windowId, ['.hudelement', 1, done]); - expect(subject.element.find).toHaveBeenCalledWith('.hudelement'); - expect(dummyElement.fadeOut).toHaveBeenCalledWith(1, done); - }); - }); - describe('Cursor events', function() { - beforeEach(function() { - subject.osd = { - canvas: '<canvas></canvas>' - }; - spyOn(jQuery.fn, 'css'); - }); - describe('SET_STATE_MACHINE_POINTER', function() { - beforeEach(function() { - spyOn(subject.hud.annoState, 'startup'); - spyOn(subject.hud.annoState, 'displayOn'); - spyOn(subject.hud.annoState, 'choosePointer'); - }); - it('responds when annotation state is none', function() { - subject.hud.annoState.current = 'none'; - subject.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + this.windowId); - expect(subject.hud.annoState.startup).toHaveBeenCalled(); - }); - it('responds when annotation state is off', function() { - subject.hud.annoState.current = 'off'; - subject.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + this.windowId); - expect(subject.hud.annoState.displayOn).toHaveBeenCalled(); - }); - it('responds when annotation state is on', function() { - subject.hud.annoState.current = 'on'; - subject.eventEmitter.publish('SET_STATE_MACHINE_POINTER.' + this.windowId); - expect(subject.hud.annoState.choosePointer).toHaveBeenCalled(); - }); - }); - it('responds to DEFAULT_CURSOR', function() { - subject.eventEmitter.publish('DEFAULT_CURSOR.' + this.windowId); - expect(jQuery) - expect(jQuery.fn.css).toHaveBeenCalledWith('cursor', 'default'); - }); - it('responds to CROSSHAIR_CURSOR', function() { - subject.eventEmitter.publish('CROSSHAIR_CURSOR.' + this.windowId); - expect(jQuery.fn.css).toHaveBeenCalledWith('cursor', 'crosshair'); - }); - it('responds to POINTER_CURSOR', function() { - subject.eventEmitter.publish('POINTER_CURSOR.' + this.windowId); - expect(jQuery.fn.css).toHaveBeenCalledWith('cursor', 'pointer'); - }); - }); - }); - - describe('bindEvents', function() { - it('should respond to clicks on next', function() { - spyOn(subject, 'next'); - subject.element.find('.mirador-osd-next').click(); - expect(subject.next).toHaveBeenCalled(); - }); - - it('should respond to clicks on previous', function() { - spyOn(subject, 'previous'); - subject.element.find('.mirador-osd-previous').click(); - expect(subject.previous).toHaveBeenCalled(); - }); - - it('should respond to clicks on rotate right', function() { - subject.osd = { - viewport: { - getRotation: jasmine.createSpy().and.returnValue(90), - setRotation: jasmine.createSpy() - } - }; - subject.element.find('.mirador-osd-rotate-right').click(); - expect(subject.osd.viewport.setRotation).toHaveBeenCalledWith(180); - }); - - it('should respond to clicks on rotate left', function() { - subject.osd = { - viewport: { - getRotation: jasmine.createSpy().and.returnValue(270), - setRotation: jasmine.createSpy() - } - }; - subject.element.find('.mirador-osd-rotate-left').click(); - expect(subject.osd.viewport.setRotation).toHaveBeenCalledWith(180); - }); - - it('should respond to clicks on home', function() { - subject.osd = { - viewport: { - goHome: jasmine.createSpy() - } - }; - subject.element.find('.mirador-osd-go-home').click(); - expect(subject.osd.viewport.goHome).toHaveBeenCalled(); - }); - - it('should toggle bottom panel', function() { - spyOn(subject.eventEmitter, 'publish'); - subject.element.find('.mirador-osd-toggle-bottom-panel').click(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('TOGGLE_BOTTOM_PANEL_VISIBILITY.' + this.windowId); - }); - - describe('direction buttons', function() { - var panPoint = new OpenSeadragon.Point(1, 2); - beforeEach(function() { - spyOn(subject, 'getPanByValue').and.returnValue(panPoint); - subject.osd = { - viewport: jasmine.createSpyObj('viewport', ['panBy', 'applyConstraints']) - }; - }); - it('should respond to clicks on up', function() { - subject.element.find('.mirador-osd-up').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(0, -2)); - }); - it('should respond to clicks on down', function() { - subject.element.find('.mirador-osd-down').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(0, 2)); - }); - it('should respond to clicks on left', function() { - subject.element.find('.mirador-osd-left').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(-1, 0)); - }); - it('should respond to clicks on right', function() { - subject.element.find('.mirador-osd-right').click(); - expect(subject.osd.viewport.panBy).toHaveBeenCalledWith(new OpenSeadragon.Point(1, 0)); - }); - }); - - describe('zoom buttons', function() { - beforeEach(function() { - subject.osd = { - zoomPerClick: 2, - viewport: jasmine.createSpyObj('viewport', ['zoomBy', 'applyConstraints']) - }; - }); - it('should respond to clicks on zoom in', function() { - subject.element.find('.mirador-osd-zoom-in').click(); - expect(subject.osd.viewport.zoomBy).toHaveBeenCalledWith(2); - }); - it('should respond to clicks on zoom out', function() { - subject.element.find('.mirador-osd-zoom-out').click(); - expect(subject.osd.viewport.zoomBy).toHaveBeenCalledWith(1/2); - }); - }); - - describe('annotation layer toggle', function() { - beforeEach(function() { - spyOn(subject.hud.annoState, 'startup'); - spyOn(subject.hud.annoState, 'displayOn'); - spyOn(subject.hud.annoState, 'displayOff'); - }); - it('should start when annotation state is none', function() { - subject.hud.annoState.current = 'none'; - subject.element.find('.mirador-osd-annotations-layer').click(); - expect(subject.hud.annoState.startup).toHaveBeenCalled(); - }); - it('should display on when annotation state is off', function() { - subject.hud.annoState.current = 'off'; - subject.element.find('.mirador-osd-annotations-layer').click(); - expect(subject.hud.annoState.displayOn).toHaveBeenCalled(); - }); - it('should display off when annotation state is on', function() { - subject.hud.annoState.current = 'on'; - subject.element.find('.mirador-osd-annotations-layer').click(); - expect(subject.hud.annoState.displayOff).toHaveBeenCalled(); - }); - }); - - describe('manipulation toggle', function() { - beforeEach(function() { - spyOn(subject.hud.manipulationState, 'startup'); - spyOn(subject.hud.manipulationState, 'displayOn'); - spyOn(subject.hud.manipulationState, 'displayOff'); - }); - it('should start when manipulation state is none', function() { - subject.hud.manipulationState.current = 'none'; - subject.element.find('.mirador-manipulation-toggle').click(); - expect(subject.hud.manipulationState.startup).toHaveBeenCalled(); - }); - it('should display on when manipulation state is off', function() { - subject.hud.manipulationState.current = 'manipulationOff'; - subject.element.find('.mirador-manipulation-toggle').click(); - expect(subject.hud.manipulationState.displayOn).toHaveBeenCalled(); - }); - it('should display off when manipulation state is on', function() { - subject.hud.manipulationState.current = 'manipulationOn'; - subject.element.find('.mirador-manipulation-toggle').click(); - expect(subject.hud.manipulationState.displayOff).toHaveBeenCalled(); - }); - }); - - // TODO: Find way to test annotation and manipulation tools without - // "displayOn inappropriate in current state pointer" error - }); - describe('Order of imagesList', function() { - it('should be reversed for r-t-l sequences and manifests', function() { - - this.fixture.viewingDirection = "right-to-left"; - var manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ), - imagesList = manifest.getCanvases(), - imagesListLtr = imagesList.concat(), - imagesListRtl = imagesList.concat(); - imagesListRtl.reverse(); - var imageView = new Mirador.ImageView({ - manifest: manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: imagesList, - imagesListLtr: imagesListLtr, - imagesListRtl: imagesListRtl, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: true, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - expect(imagesList[imagesList.length - 1]).toBe(imageView.imagesListRtl[0]); - }); - }); - - describe('getPanByValue', function() { - beforeEach(function() { - subject.osd = { - viewport: { - getBounds: function(b) { - return viewportBounds; - } - } - }; - }); - it('should return half height and width', function() { - expect(subject.getPanByValue().x).toBeCloseTo(viewportBounds.width/2 , 2); - expect(subject.getPanByValue().y).toBeCloseTo(viewportBounds.height/2 , 2); - }); - }); - - describe('setBounds', function() { - beforeEach(function() { - subject.osdOptions = { - osdBounds: { - degrees: 0, - height: 1, - width: 1, - x: -0.5, - y: -0.5 - } - }; - subject.osd = { - viewport: { - getBounds: function(b) { - return viewportBounds; - }, - viewportToImageRectangle: function(ob) { - return imageBounds; - } - } - }; - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should update osdOptions and the viewport', function() { - subject.setBounds(); - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - - describe('toggle', function() { - beforeEach(function() { - spyOn(subject, 'show'); - spyOn(subject, 'hide'); - }); - it('should call show for true', function() { - subject.toggle(true); - expect(subject.show).toHaveBeenCalled(); - expect(subject.hide).not.toHaveBeenCalled(); - }); - it('should call hide for false', function() { - subject.toggle(false); - expect(subject.show).not.toHaveBeenCalled(); - expect(subject.hide).toHaveBeenCalled(); - }); - }); - - describe('hide', function() { - beforeEach(function() { - spyOn(jQuery.prototype, 'hide').and.stub(); - }); - it('should hide', function() { - subject.hide(); - expect(jQuery.prototype.hide).toHaveBeenCalled(); - }); - }); - - describe('show', function() { - beforeEach(function() { - spyOn(jQuery.prototype, 'show').and.stub(); - }); - it('should show', function() { - subject.show(); - expect(jQuery.prototype.show).toHaveBeenCalled(); - }); - }); - - describe('adjustWidth', function() { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should publish REMOVE_CLASS event when hasClass is true', function() { - subject.adjustWidth('xekko', true); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_CLASS.'+this.windowId, 'xekko'); - }); - it('should publish ADD_CLASS event when hasClass is false', function() { - subject.adjustWidth('xekko', false); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_CLASS.'+this.windowId, 'xekko'); - }); - }); - - describe('adjustHeight', function() { - it('should remove class when hasClass is true', function() { - subject.element.addClass('xekko'); - subject.adjustHeight('xekko', true); - expect(subject.element.hasClass('xekko')).toBe(false); - }); - it('should add class when hasClass is false', function() { - subject.element.removeClass('xekko'); - subject.adjustHeight('xekko', false); - expect(subject.element.hasClass('xekko')).toBe(true); - }); - }); - - // WARNING: This method has been spied out to stop PhantomJS from crashing. - xdescribe('initialiseImageCanvas', function() { - }); - - describe('addAnnotationsLayer', function() { - beforeEach(function() { - spyOn(Mirador, 'AnnotationsLayer').and.stub(); - }); - it('should attempt to create AnnotationsLayer', function() { - subject.addAnnotationsLayer(subject.element); - expect(Mirador.AnnotationsLayer).toHaveBeenCalled(); - }); - }); - - describe('updateImage', function() { - beforeEach(function() { - var oldCanvasID = this.imagesList[0]['@id']; - subject.canvasID = oldCanvasID; - spyOn(subject.eventEmitter, 'publish'); - }); - describe('Different from original', function() { - beforeEach(function() { - subject.osd = { - viewport: { - imageToViewportRectangle: jasmine.createSpy('imageToViewportRectangle').and.returnValue(new OpenSeadragon.Rect(1, 2, 640, 480, 0)), - fitBoundsWithConstraints: jasmine.createSpy('fitBoundsWithConstraints'), - fitBounds: jasmine.createSpy('fitBoundsWithConstraints') - } - }; - subject.updateImage(this.imagesList[1]['@id']); - }); - it('should change the canvasID on the object', function() { - expect(subject.canvasID).not.toEqual(this.imagesList[0]['@id']); - expect(subject.canvasID).toEqual(this.imagesList[1]['@id']); - }); - it('should fire event', function() { - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - describe('Same as original', function() { - beforeEach(function() { - subject.osd = { - close: function() {} - }; - spyOn(subject.osd, 'close'); - subject.updateImage(subject.canvasID); - }); - it('should fire event', function() { - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - }); - - describe('next', function() { - beforeEach(function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - }); - it('should move one canvas forward on non-last canvases', function() { - subject.currentImgIndex = 0; - subject.next(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[1]['@id']); - }); - it('should stay on last canvas', function() { - subject.currentImgIndex = this.imagesList.length-1; - subject.next(); - expect(this.eventEmitter.publish).not.toHaveBeenCalled(); - }); - }); - - describe('previous', function() { - beforeEach(function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - }); - it('should move one canvas back on non-first canvases', function() { - subject.currentImgIndex = 1; - subject.previous(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[0]['@id']); - }); - it('should stay on first canvas', function() { - subject.currentImgIndex = 0; - subject.previous(); - expect(this.eventEmitter.publish).not.toHaveBeenCalled(); - }); - }); - - describe('manipulation tools', function() { - describe('mirror', function() { - beforeEach(function() { - var allCanvasControls = jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS.windowSettings.canvasControls, { - 'imageManipulation': { 'controls': { 'mirror': true } } - } - ); - subject = new Mirador.ImageView( - jQuery.extend(true, subject, {canvasControls: allCanvasControls }) - ); - subject.osd = { - canvas: '<canvas></canvas>' - }; - }); - it('when clicked, fires enableManipulation, mirror', function() { - spyOn(subject.eventEmitter, 'publish'); - subject.element.find('.mirador-osd-mirror').click(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('enableManipulation', 'mirror'); - }); - it('when clicked, adds mirador-mirror class', function() { - spyOn(jQuery.fn, 'addClass'); - subject.element.find('.mirador-osd-mirror').click(); - expect(jQuery.fn.addClass).toHaveBeenCalledWith('mirador-mirror'); - }); - it('when clicked again, removes mirador-mirror class', function() { - spyOn(jQuery.fn, 'removeClass'); - subject.element.find('.mirador-osd-mirror').click(); - subject.element.find('.mirador-osd-mirror').click(); - expect(jQuery.fn.removeClass).toHaveBeenCalledWith('mirador-mirror'); - }); - }); - }); -}); diff --git a/spec/widgets/layersTab.test.js b/spec/widgets/layersTab.test.js deleted file mode 100644 index 58183daafcc63d844faeecd31c8b3c8bab62326d..0000000000000000000000000000000000000000 --- a/spec/widgets/layersTab.test.js +++ /dev/null @@ -1,346 +0,0 @@ -describe('LayersTab', function() { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.element = jQuery('<div class="tab-container" id="layersTab"></div>'); - this.eventEmitter = new Mirador.EventEmitter(); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.imagesList = this.manifest.getCanvases(); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.layersTab = new Mirador.LayersTab({ - manifest: this.manifest, - appendTo: this.element, - visible: true, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - canvases: { - 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json': { - getVisibleImages: function() { return []; }, - label: 'f. 033v - 034', - getBounds: function() { - return { - 'x': 800, - 'y': 600, - 'width': 800, - 'height': 600 - }; - }, - show: function() { - }, - images: [ - { - id:1, - url: 'aurl', - getOpacity: function() { - return 0.3; - }, - getVisible: function() { - return true; - }, - getStatus: function() { - return 'drawn'; - } - }, - {id:2, - url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return false; - }, - getStatus: function() { - return 'requested'; - } - } - ] - }, - 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json': { - getVisibleImages: function() { return []; }, - getBounds: function() { - return { - 'x': 800, - 'y': 600, - 'width': 800, - 'height': 600 - }; - }, - show: function() { - }, - images: [ - { - url: 'aurl', - getOpacity: function() { - return 0.3; - }, - getVisible: function() { - return 'true'; - }, - getStatus: function() { - return 'drawn'; - } - }, - {url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return 'true'; - }, - getStatus: function() { - return 'requested'; - } - } - ] - } - }, - canvasID: 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json' - }); - subject = this.layersTab; - }); - - afterEach(function() { - delete this.layersTab; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - }); - }); - - describe('localState', function() { - var target_state = { - id: 'layersTab', - visible: true, - additional_key: true - }; - it('should return the state as-is when given no arguments', function() { - expect(subject.localState()).toEqual(subject.layerTabState); - expect(subject.localState()).not.toEqual(target_state); - }); - it('should set and return the new state when given arguments', function() { - expect(subject.localState(target_state, true)).toEqual(target_state); - expect(subject.localState()).toEqual(target_state); - }); - it('should publish a layersTabStateUpdated event on non-initial setup', function() { - spyOn(this.eventEmitter, 'publish'); - expect(subject.localState(target_state, false)).toEqual(target_state); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('layersTabStateUpdated.' + this.windowId, target_state); - expect(subject.localState()).toEqual(target_state); - }); - }); - - describe('tabStateUpdated', function() { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should set visible in the local state', function() { - jQuery.each([false, true], function(k, visible) { - subject.tabStateUpdated(visible); - expect(subject.localState().visible).toEqual(visible); - expect(subject.eventEmitter.publish).toHaveBeenCalled(); - }); - }); - }); - - describe('listenForActions', function() { - it('should run layersTabStateUpdated upon getting a layersTabStateUpdated event', function() { - var data = { - selectedTabIndex: 0, - tabs: [ - { - options: { - id: 'layersTab' - } - }, - { - options: { - id: 'someOtherTab' - } - } - ], - layersTab: true - }; - spyOn(subject, 'tabStateUpdated'); - subject.eventEmitter.publish('tabStateUpdated.' + this.windowId, data); - expect(subject.tabStateUpdated).toHaveBeenCalledWith(true); - }); - it('should rerender upon getting a layerTabStateUpdated event', function() { - var data = { visible: false }; - spyOn(subject, 'render'); - subject.eventEmitter.publish('layersTabStateUpdated.' + this.windowId, data); - expect(subject.render).toHaveBeenCalledWith(data); - }); - }); - - describe('event callbacks', function() { - it('canvasIdUpdated', function() { - var mockCanvasId = 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981096.json'; - - expect(subject.localState().canvasID).toEqual('https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json'); - subject.canvasIdUpdated({}, mockCanvasId); // blank object represents event. - expect(subject.localState().canvasID).toEqual(mockCanvasId); - }); - - it('updateImageResourceStatus should show the resource status rendered appropriately', function() { - var mockImageResourceObject1 = { - id:2, - url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return false; - }, - getStatus: function() { - return 'loaded'; - } - }; - var mockImageResourceObject2 = { - id:2, - url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return false; - }, - getStatus: function() { - return 'requested'; - } - }; - var mockImageResourceObject3 = { - id:2, - url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return false; - }, - getStatus: function() { - return 'initialized'; - } - }; - var mockImageResourceObject4 = { - id:2, - url: 'aurl', - getOpacity: function() { - return 1; - }, - getVisible: function() { - return false; - }, - getStatus: function() { - return 'drawn'; - } - }; - expect(this.element.find('.layers-list-item').last()).toHaveClass('requested'); - subject.updateImageResourceStatus({}, mockImageResourceObject1); - expect(this.element.find('.layers-list-item').last()).toHaveClass('loaded'); - - expect(this.element.find('.layers-list-item').last()).toHaveClass('loaded'); - subject.updateImageResourceStatus({}, mockImageResourceObject2); - expect(this.element.find('.layers-list-item').last()).toHaveClass('requested'); - - expect(this.element.find('.layers-list-item').last()).toHaveClass('requested'); - subject.updateImageResourceStatus({}, mockImageResourceObject3); - expect(this.element.find('.layers-list-item').last()).toHaveClass('initialized'); - - expect(this.element.find('.layers-list-item').last()).toHaveClass('initialized'); - subject.updateImageResourceStatus({}, mockImageResourceObject4); - expect(this.element.find('.layers-list-item').last()).toHaveClass('drawn'); - }); - - it('hideImageResource should set the visibility of the image resource to false', function() { - var mockImageResourceObject = { - id:1, - url: 'aurl', - getOpacity: function() { - return 0.3; - }, - getVisible: function() { - return 'false'; - }, - getStatus: function() { - return 'drawn'; - } - }; - expect(this.element.find('.layers-listing li').first().find('.visibility-toggle')[0].checked).toBe(true); - subject.hideImageResource({}, mockImageResourceObject); // empty object mocks event object in callback - expect(this.element.find('.layers-listing li').first().find('.visibility-toggle')[0].checked).toBe(false); - }); - - it('showImageResource should set the visibility of the image resource to true', function() { - var mockImageResourceObject = { - id:2, - url: 'aurl', - getOpacity: function() { - return 0.3; - }, - getVisible: function() { - return 'true'; - }, - getStatus: function() { - return 'drawn'; - } - }; - expect(this.element.find('.layers-listing li').last().find('.visibility-toggle')[0].checked).toBe(false); - expect(this.element.find('.layers-listing li').last().find('.opacity-label')).toHaveClass('disabled'); - console.info(this.element.find('.layers-listing li').last().find('.opacity-label')); - subject.showImageResource({}, mockImageResourceObject); // empty object mocks event object in callback - expect(this.element.find('.layers-listing li').last().find('.opacity-label')).not.toHaveClass('disabled'); - expect(this.element.find('.layers-listing li').last().find('.visibility-toggle')[0].checked).toBe(true); - }); - - it('updateImageResourceOpacity should adjust the value of the slider bar', function() { - var mockImageResourceObject = { - id:2, - url: 'aurl', - getOpacity: function() { - return 0.9; - }, - getVisible: function() { - return 'true'; - }, - getStatus: function() { - return 'drawn'; - } - }; - - expect(this.element.find('.layers-listing li').last().find('.opacity-slider').val()).toEqual('100'); - subject.updateImageResourceOpacity({}, mockImageResourceObject); // empty object mocks event object in callback - expect(this.element.find('.layers-listing li').last().find('.opacity-slider').val()).toEqual('90'); - }); - - it('imageFocusUpdated should display the disabled message and not the default template', function() { - expect(subject.localState().active).toBe(true); - subject.imageFocusUpdated('ThumbnailsView'); - expect(subject.localState().active).toBe(false); - subject.imageFocusUpdated('ImageView'); - expect(subject.localState().active).toBe(true); - subject.imageFocusUpdated('ScrollView'); - expect(subject.localState().active).toBe(false); - }); - - }); - - describe('render', function() { - it('should hide itself if not visible', function() { - spyOn(jQuery.fn, 'hide'); - subject.render({ - canvasID: 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5981094.json', - active: true, - visible: false - }); - expect(subject.element.hide).toHaveBeenCalled(); - expect(this.element.find('.layers-listing').children().length).toEqual(2); - }); - }); -}); diff --git a/spec/widgets/metadataView.test.js b/spec/widgets/metadataView.test.js deleted file mode 100644 index 8cbe9d2a5ff65ff9541890251caef438c993d6e6..0000000000000000000000000000000000000000 --- a/spec/widgets/metadataView.test.js +++ /dev/null @@ -1,245 +0,0 @@ -describe('MetadataView', function() { - var subject; - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.fixture = getJSONFixture('metadataFixture.json'); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - $('body').append('<div id="metadata-view-container"></div>'); - this.sandbox = jQuery('#metadata-view-container'); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.canvasID = 'https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981522.json'; - this.metadataView = new Mirador.MetadataView({ - manifest: this.manifest, - appendTo: this.sandbox, - windowId: this.windowId, - canvasID: this.canvasID - }); - subject = this.metadataView; - }); - - afterEach(function() { - delete this.metadataView; - this.sandbox.remove(); - $('body').html(''); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - }); - }); - - describe('stringifyObject', function() { - it('should stringify regular expressions', function() { - expect(subject.stringifyObject(/\w\S*/g)).toEqual('/\\w\\S*/'); - }); - it('should stringify arrays', function() { - expect(subject.stringifyObject(['a', 'b', 'c'])).toEqual('[ a, b, c ]'); - }); - it('should stringify objects', function() { - expect(subject.stringifyObject({ a: 3, b: 'waahoo'})).toEqual('<div style="margin-left:0px">a: 3<br/>b: waahoo</div>'); - expect(subject.stringifyObject({ a: 3, b: { c: 'waahoo' }})).toEqual('<div style="margin-left:0px">a: 3<br/>b: <div style="margin-left:15px">c: waahoo</div></div>'); - }); - it('should return strings as-is', function() { - expect(subject.stringifyObject('abc')).toEqual('abc'); - }); - }); - - describe('stringifyRelated', function() { - it('should handle arrays of strings', function() { - expect(subject.stringifyRelated([ - 'http://projectmirador.org', - '', - 'http://iiif.io', - 'http://github.com/iiif' - ])).toEqual( - '<a href="http://projectmirador.org" target="_blank">http://projectmirador.org</a>' + - '<br/><a href="http://iiif.io" target="_blank">http://iiif.io</a>' + - '<br/><a href="http://github.com/iiif" target="_blank">http://github.com/iiif</a>' - ); - }); - it('should handle objects', function() { - expect(subject.stringifyRelated({ - '@id': 'http://projectmirador.org', - label: 'Project Mirador', - format: 'text/html' - })).toEqual('<a href="http://projectmirador.org" target="_blank">Project Mirador</a> '); - expect(subject.stringifyRelated({ - '@id': 'http://projectmirador.org/logo.png', - format: 'image/png' - })).toEqual('<a href="http://projectmirador.org/logo.png" target="_blank">http://projectmirador.org/logo.png</a> (image/png)'); - }); - it('should handle strings', function() { - expect(subject.stringifyRelated('This should not be changed.')).toEqual('This should not be changed.'); - }); - it('should handle strings with links', function() { - expect(subject.stringifyRelated('See us at http://projectmirador.org for more examples!')).toEqual('See us at <a href="http://projectmirador.org" target="_blank">http://projectmirador.org</a> for more examples!'); - }); - }); - - describe('getMetadataDetails', function() { - it('should grab English details', function() { - expect(subject.getMetadataDetails(this.manifest.jsonLd)).toEqual([ - { label: 'label', value: '<b></b>' }, - { label: 'description', value: '' }, - { label: 'Single', value: 'default' }, - { label: 'Multiple with default', value: 'English' }, - { label: 'Multiple without default', value: 'English' }, - { label: 'Single HTML with invalid elements', value: "<span>test bad</span>" }, - { label: 'Single HTML with valid elements', value: "<span><b>bold</b><i>italic</i><br /><a href=\"http://iiif.io/\" target=\"_blank\"><img src=\"http://iiif.io/img/logo-iiif-34x30.png\" /></a></span>" }, - { label: 'Single text with single URL', value: "There's an URL: http://example.com" }, - { label: 'Single text with multiple URLs', value: "There's an URL: http://example.com and here's another: http://foobar.org" }, - { label: "Single text with single URL already wrapped in an anchor tag, but without target blank", value: "There's an URL: <a href=\"http://example.com\">foobar</a>" } - ]); - }); - }); - - describe('getMetadataRights', function() { - it('should grab rights when present', function() { - expect(subject.getMetadataRights({ - license: 'CC-BY-ND 2.0', - attribution: 'Oodlepods Fellowship International' - })).toEqual([ - { identifier: 'license', label: 'license', value: 'CC-BY-ND 2.0' }, - { identifier: 'attribution', label: 'attribution', value: 'Oodlepods Fellowship International' } - ]); - }); - it('should default to blanks when not present', function() { - expect(subject.getMetadataRights(this.manifest.jsonLd)).toEqual([ - { identifier: 'license', label: 'license', value: '' }, - { identifier: 'attribution', label: 'attribution', value: '' } - ]); - }); - }); - - describe('getMetadataLinks', function() { - it('should always display the manifest id', function() { - expect(subject.getMetadataLinks(this.manifest.jsonLd)[2].value).toContain('http://www.example.org/iiif/book1/manifest'); - }); - it('should grab metadata links when present', function() { - expect(subject.getMetadataLinks({ - related: "http://news.example.net", - seeAlso: "http://oodlepods.example.net", - '@id': "http://www.example.org/iiif/book1/manifest", - within: "Oodlepods Monthly Issue #6" - })).toEqual([ - { identifier: 'related', label: 'related', value: '<a href="http://news.example.net" target="_blank">http://news.example.net</a>' }, - { identifier: 'seeAlso', label: 'seeAlso', value: '<a href="http://oodlepods.example.net" target="_blank">http://oodlepods.example.net</a>' }, - { identifier: 'manifest', label: 'manifest', value: '<a href="http://www.example.org/iiif/book1/manifest" target="_blank">http://www.example.org/iiif/book1/manifest</a>'}, - { identifier: 'within', label: 'within', value: 'Oodlepods Monthly Issue #6' } - ]); - }); - it('should default to blanks when not present', function() { - expect(subject.getMetadataLinks(this.manifest.jsonLd)).toEqual([ - { identifier: 'related', label: 'related', value: '' }, - { identifier: 'seeAlso', label: 'seeAlso', value: '' }, - { identifier: 'manifest', label: 'manifest', value: '<a href="http://www.example.org/iiif/book1/manifest" target="_blank">http://www.example.org/iiif/book1/manifest</a>'}, - { identifier: 'within', label: 'within', value: '' } - ]); - }); - }); - - describe('extractLabelFromAttribute', function() { - it('Converts attributes', function() { - expect(subject.extractLabelFromAttribute('super WaahooLabelFromAttr')).toEqual('super WaahooLabelFromAttr'); - }); - }); - - xdescribe('bindEvents', function() { - - }); - - describe('toggle', function() { - beforeEach(function() { - spyOn(subject, 'show'); - spyOn(subject, 'hide'); - }); - it('should call show for true', function() { - subject.toggle(true); - expect(subject.show).toHaveBeenCalled(); - expect(subject.hide).not.toHaveBeenCalled(); - }); - it('should call hide for false', function() { - subject.toggle(false); - expect(subject.show).not.toHaveBeenCalled(); - expect(subject.hide).toHaveBeenCalled(); - }); - }); - - describe('show', function() { - it('should show the metadataView', function () { - spyOn(jQuery.fn, 'show'); - subject.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - }); - it('should show at the parent level if embedded', function() { - var dummyParent = document.createElement('span'); - subject.panel = { panel: "fake" }; - spyOn(subject.element, 'parent').and.returnValue(dummyParent); - spyOn(jQuery.fn, 'show'); - subject.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - }); - }); - - describe('hide', function() { - it('should hide the metadataView', function () { - spyOn(jQuery.fn, 'hide'); - subject.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - }); - it('should hide at the parent level if embedded', function() { - var dummyParent = document.createElement('span'); - subject.panel = { panel: "fake" }; - spyOn(subject.element, 'parent').and.returnValue(dummyParent); - spyOn(jQuery.fn, 'hide'); - subject.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - }); - }); - - describe('addLinksToUris', function() { - it('should replace URIs with links', function() { - expect(subject.addLinksToUris('See us at http://projectmirador.org for more examples!')).toEqual('See us at <a href="http://projectmirador.org" target="_blank">http://projectmirador.org</a> for more examples!'); - }); - it('should leave other things alone', function() { - expect(subject.addLinksToUris('This should not be changed.')).toEqual('This should not be changed.'); - }); - }); - - describe('renderWithin', function() { - it('should render simple strings as-is', function() { - var within = "http://example.com"; - expect(Mirador.MetadataView.prototype.getWithin(within)).toBe(within); - }); - - it('should render a collection object without a label', function() { - var within = {'@id': 'http://example.com', '@type': 'sc:Collection'}; - expect(Mirador.MetadataView.prototype.getWithin(within)).toBe( - '<a href="http://example.com" target="_blank">http://example.com</a>'); - }); - - it('should render a collection object with a label', function() { - var within = {'@id': 'http://example.com', '@type': 'sc:Collection', 'label': 'foobar'}; - expect(Mirador.MetadataView.prototype.getWithin(within)).toBe( - '<a href="http://example.com" target="_blank">foobar</a>'); - }); - - it('should render a list of collection objects', function() { - var within = [ - {'@id': 'http://example.com', '@type': 'sc:Collection', 'label': 'foobar'}, - {'@id': 'http://foo.org', '@type': 'sc:Collection', 'label': 'barfoo'}]; - expect(Mirador.MetadataView.prototype.getWithin(within)).toBe( - '<a href="http://example.com" target="_blank">foobar</a><br/>' + - '<a href="http://foo.org" target="_blank">barfoo</a>'); - }); - - it('should render a list of strings <br/>-concatenated', function() { - var within = ['http://example.com/foo', 'http://example.com/bar']; - expect(Mirador.MetadataView.prototype.getWithin(within)).toBe( - 'http://example.com/foo<br/>http://example.com/bar'); - }); - }); -}); diff --git a/spec/widgets/scrollView.test.js b/spec/widgets/scrollView.test.js deleted file mode 100644 index fa6feb4ff275d1c998536452c89c4b22474492b1..0000000000000000000000000000000000000000 --- a/spec/widgets/scrollView.test.js +++ /dev/null @@ -1,55 +0,0 @@ -describe('ScrollView', function() { - var subject; - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.viewContainer = document.createElement('div', { - class: 'view-container' - }); - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.appendTo = this.viewContainer; - this.eventEmitter = new Mirador.EventEmitter; - this.imagesList = this.manifest.getCanvases(); - this.canvasControls = jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS.windowSettings.canvasControls - ); - this.state = state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: this.eventEmitter} - )); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.scrollView = new Mirador.ScrollView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - imagesListLtr: this.imagesList.concat(), - state: this.state, - vDirectionStatus: 'rtl', - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - thumbInfo: {listingCssCls: 'scroll-listing-thumbs', thumbnailCls: 'scroll-view'} - }); - subject = this.scrollView; - }); - - afterEach(function() { - delete this.scrollView; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(jQuery(subject.appendTo).find('.scroll-view')).toExist(); - }); - }); - - describe('Right to Left scrollview', function() { - it('should have the correct CSS Class applied', function() { - expect(jQuery(subject.appendTo).find('.scroll-view')).toHaveClass('v-direction-rtl'); - }); - }); -}); diff --git a/spec/widgets/searchWithin.test.js b/spec/widgets/searchWithin.test.js deleted file mode 100644 index 3b546edee6d8729912cf902d4a220a84ff25b8f2..0000000000000000000000000000000000000000 --- a/spec/widgets/searchWithin.test.js +++ /dev/null @@ -1,176 +0,0 @@ - -describe('Search tab', function() { - beforeEach(function(){ - var _this = this; - - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - - this.searchURI = "/search?q=" - this.eventEmitter = new Mirador.EventEmitter(); - this.jsonLd = getJSONFixture('searchManifest.json'); - this.results = getJSONFixture('searchManifest.results.json'); - this.manifest = new Mirador.Manifest(null, null, this.jsonLd); - this.jsonLdNoSearch = getJSONFixture('BNF-condorcet-florus-dispersus-manifest.json'); - this.noResults = getJSONFixture('searchManifest.noresults.json'); - this.manifestNoSearch = new Mirador.Manifest(null, null, this.jsonLdNoSearch); - this.sandbox = sandbox(); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.createSearchTab = function(manifest) { - return new Mirador.SearchTab({ - manifest: manifest, - appendTo: _this.sandbox, - windowId: this.windowId, - canvasID: 1234, - eventEmitter: _this.eventEmitter - }); - } - }); - - afterEach(function() { - }); - - describe('on instantiation', function(){ - it('should instantiate a search tab object', function() { - expect(this.createSearchTab.bind(this.createSearchTab, this.manifest)).not.toThrow(); - }); - }); - - describe('on initialization', function(){ - it('should render a search tab', function() { - this.createSearchTab(this.manifest); - expect(this.sandbox.find('.search-results')).toExist(); - }); - - it('should render a search form', function() { - this.createSearchTab(this.manifest); - expect(this.sandbox.find('#search-within-form')).toExist(); - }); - - it('should render a search tab when there is not such service in the manifest', function() { - this.createSearchTab(this.manifestNoSearch); - expect(this.sandbox.find('.search-results')).toExist(); - }); - - it('should not render a search form when there is not such service in the manifest', function() { - this.createSearchTab(this.manifestNoSearch); - expect(this.sandbox.find('#search-within-form')).not.toExist(); - }); - - it('should allow to search text', function() { - this.createSearchTab(this.manifest); - var _this = this, - searchForm = this.sandbox.find('#search-within-form'), - searchInput = this.sandbox.find('#search-within-form input.js-query'); - expect(searchInput).toExist(); - searchInput.val('found'); - expect(searchForm.trigger.bind(searchForm, 'submit')).not.toThrow(); - }); - }); - - describe('on search', function(){ - beforeEach(function() { - this.createSearchTab(this.manifest); - this.server = sinon.fakeServer.create(); - this.server.respondImmediately = true; - this.server.respondWith("GET", this.searchURI + "found", [ - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(this.results) - ]); - this.server.respondWith("GET", this.searchURI + "notfound", [ - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(this.noResults) - ]); - }); - - afterEach(function() { - this.server.restore(); - }); - - it('should show results after searching for some text', function() { - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - expect(this.sandbox.find('.search-result')).toExist(); - }); - - it('should not show results when no results are found', function() { - this.sandbox.find('#search-within-form input.js-query').val('notfound'); - this.sandbox.find('#search-within-form').trigger('submit'); - expect(this.sandbox.find('.search-result')).not.toExist(); - }); - - it('should allow clicking on results after searching for some text', function() { - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - var hit = this.sandbox.find('.result-paragraph').first(); - expect(hit.trigger.bind(hit, 'click')).not.toThrow(); - }); - - it('should navigate to a specific canvas and bounds after clicking on a search result', function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - var hit = this.sandbox.find('.result-paragraph').first(), - canvasID = hit.attr('data-canvasid'), - coordinates = hit.attr('data-coordinates'), - xywh = coordinates && coordinates.split('=')[1].split(',').map(Number), - bounds = xywh && {x: xywh[0], y: xywh[1], width: xywh[2], height: xywh[3]}; - hit.trigger('click'); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, { - "canvasID": canvasID, - "bounds": bounds - }); - }); - - it('should show annotations when a search result is linked to more than one', function() { - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - expect(this.sandbox.find('.search-annotation').first()).toExist(); - }); - - it('should allow clicking on annotations when a search result is linked to more than one', function() { - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - var anno = this.sandbox.find('.search-annotation').first(); - expect(anno).toExist(); - expect(anno.trigger.bind(anno, 'click')).not.toThrow(); - }); - - it('should navigate to a specific bounds and canvas after clicking on an search result linked annotation', function() { - spyOn(this.eventEmitter, 'publish').and.callThrough(); - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - var anno = this.sandbox.find('.search-annotation').first(), - canvasID = anno.attr('data-canvasid'), - coordinates = anno.attr('data-coordinates'), - xywh = coordinates && coordinates.split('=')[1].split(',').map(Number), - bounds = xywh && {x: xywh[0], y: xywh[1], width: xywh[2], height: xywh[3]}; - anno.trigger('click'); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, { - "canvasID": canvasID, - "bounds": bounds - }); - }); - - it('should not change canvas after clicking on a second annotation linked to a search result', function() { - this.sandbox.find('#search-within-form input.js-query').val('found'); - this.sandbox.find('#search-within-form').trigger('submit'); - var anno1 = this.sandbox.find('.search-annotation').first(), - anno2 = this.sandbox.find('.search-annotation:nth-child(2)').first(), - canvasID1 = anno2.attr('data-canvasid'), - canvasID2 = anno2.attr('data-canvasid'), - coordinates = anno2.attr('data-coordinates'), - xywh = coordinates && coordinates.split('=')[1].split(',').map(Number), - bounds = xywh && {x: xywh[0], y: xywh[1], width: xywh[2], height: xywh[3]}; - anno1.trigger('click'); - spyOn(this.eventEmitter, 'publish').and.callThrough(); - anno2.trigger('click'); - expect(canvasID1).toBe(canvasID2); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, { - "canvasID": canvasID2, - "bounds": bounds - }); - }); - }); -}); diff --git a/spec/widgets/sidePanel.test.js b/spec/widgets/sidePanel.test.js deleted file mode 100644 index 1acc3aab45684d49b3f7f355438b21c4bf801116..0000000000000000000000000000000000000000 --- a/spec/widgets/sidePanel.test.js +++ /dev/null @@ -1,187 +0,0 @@ -describe('SidePanel', function() { - - function createSidePanel(sidePanelOptions) { - sidePanelOptions = sidePanelOptions || {}; - - var eventEmitter = new Mirador.EventEmitter(); - var state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: eventEmitter} - )); - - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - var fixture = getJSONFixture('BNF-condorcet-florus-dispersus-manifest.json'); - var manifest = new Mirador.Manifest(fixture['@id'], 'IIIF', fixture); - var canvasID = manifest.getCanvases()[0]['@id']; - var appendTo = jQuery('<div class="sidePanel"></div>'); - - var config = jQuery.extend(true, { - windowId: '380c9e54-7561-4010-a99f-f132f5dc13fd', - state: state, - eventEmitter: eventEmitter, - appendTo: appendTo, - manifest: manifest, - canvasID: canvasID, - layersTabAvailable: false, - tocTabAvailable: false, - searchTabAvailable: false, - annotationsTabAvailable: false, - hasStructures: false - }, sidePanelOptions); - - return new Mirador.SidePanel(config); - } - - describe('Methods using fixed configuration', function() { - beforeEach(function() { - spyOn(Mirador, 'TableOfContents').and.callThrough(); - spyOn(Mirador, 'SearchTab').and.callThrough(); - spyOn(Mirador, 'LayersTab').and.callThrough(); - spyOn(Mirador, 'AnnotationsTab').and.callThrough(); - this.sidePanel = createSidePanel(); - }); - - afterEach(function() { - delete this.sidePanel; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(this.sidePanel instanceof Mirador.SidePanel).toBeTruthy(); - expect(this.sidePanel.appendTo).toBeTruthy(); - }); - }); - - describe('loadSidePanelComponents', function() { - describe('should show all unavailable by default', function() { - this.sidePanel = createSidePanel(); - it('should show toc is not available', function(){ - expect(Mirador.TableOfContents).not.toHaveBeenCalled(); - }); - it('should show searchTab is not available', function(){ - expect(Mirador.SearchTab).not.toHaveBeenCalled(); - }); - it('should show layerTab is not available', function(){ - expect(Mirador.LayersTab).not.toHaveBeenCalled(); - }); - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - expect(this.sidePanel instanceof Mirador.SidePanel).toBeTruthy(); - expect(this.sidePanel.appendTo).toBeTruthy(); - }); - }); - - describe('update', function() { - it('should make panels unavailable or available', function() { - this.sidePanel.update('search', false); - expect(this.sidePanel.panelState.tabs[2].options.available).toBe(false); - this.sidePanel.update('search', true); - expect(this.sidePanel.panelState.tabs[2].options.available).toBe(true); - }); - }); - - describe('updateState', function() { - var target_state; - beforeEach(function() { - target_state = {}; - jQuery.extend(target_state, this.sidePanel.panelState, { - additional_key: true - }); - }); - it('should return the state as-is when given no arguments', function() { - expect(this.sidePanel.updateState()).toEqual(this.sidePanel.panelState); - expect(this.sidePanel.updateState()).not.toEqual(target_state); - }); - it('should set and return the new state when given arguments', function() { - expect(this.sidePanel.updateState(target_state, true)).toEqual(target_state); - expect(this.sidePanel.updateState()).toEqual(target_state); - }); - it('should publish a annotationsTabStateUpdated event on non-initial setup', function() { - spyOn(this.sidePanel.eventEmitter, 'publish'); - expect(this.sidePanel.updateState(target_state, false)).toEqual(target_state); - expect(this.sidePanel.eventEmitter.publish).toHaveBeenCalledWith('sidePanelStateUpdated.' + this.sidePanel.windowId, target_state); - expect(this.sidePanel.updateState()).toEqual(target_state); - }); - }); - - describe('panelToggled', function() { - it('should turn open on and off', function() { - this.sidePanel.panelToggled(); - expect(this.sidePanel.panelState.open).toBeFalsy(); - this.sidePanel.panelToggled(); - expect(this.sidePanel.panelState.open).toBeTruthy(); - }); - }); - - describe('listenForActions', function() { - it('should re-render upon a sidePanelStateUpdated event', function() { - spyOn(this.sidePanel, 'render'); - this.sidePanel.eventEmitter.publish('sidePanelStateUpdated.'+this.sidePanel.windowId, {data:'waahoo'}); - expect(this.sidePanel.render).toHaveBeenCalledWith({data:'waahoo'}); - }); - it('should toggle upon a sidePanelToggled event', function() { - spyOn(this.sidePanel, 'panelToggled'); - this.sidePanel.eventEmitter.publish('sidePanelToggled.'+this.sidePanel.windowId); - expect(this.sidePanel.panelToggled).toHaveBeenCalled(); - }); - it('should update canvas ID upon a currentCanvasIDUpdated event', function() { - this.sidePanel.eventEmitter.publish('currentCanvasIDUpdated.'+this.sidePanel.windowId, 'newcanvas'); - expect(this.sidePanel.canvasID).toEqual('newcanvas'); - }); - }); - - }); - - }); - - describe('loadSidePanelComponents with varying configurations', function() { - afterEach(function(){ - delete this.sidePanel; - }); - - describe('should initialise all tabs if they are configured to be available', function() { - beforeEach(function() { - spyOn(Mirador, 'TableOfContents'); - spyOn(Mirador, 'SearchTab'); - spyOn(Mirador, 'LayersTab'); - this.sidePanel = createSidePanel({ - layersTabAvailable: true, - tocTabAvailable: true, - searchTabAvailable: true - }); - }); - it('should initialise Toc', function(){ - expect(Mirador.TableOfContents).toHaveBeenCalled(); - }); - it('should initialise SearchTab', function(){ - expect(Mirador.SearchTab).toHaveBeenCalled(); - }); - it('should initialise LayersTab', function(){ - expect(Mirador.LayersTab).toHaveBeenCalled(); - }); - describe('toggle', function() { - beforeEach(function() { - spyOn(jQuery.fn, 'hide'); - spyOn(jQuery.fn, 'show'); - spyOn(this.sidePanel.eventEmitter, 'publish'); - }); - it('should toggle on', function() { - this.sidePanel.toggle(true); - expect(jQuery.fn.hide).not.toHaveBeenCalled(); - expect(jQuery.fn.show).toHaveBeenCalled(); - expect(this.sidePanel.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_CLASS.'+this.sidePanel.windowId, 'focus-max-width'); - expect(this.sidePanel.eventEmitter.publish).toHaveBeenCalledWith('SHOW_ICON_TOC.'+this.sidePanel.windowId); - }); - it('should toggle off', function() { - this.sidePanel.toggle(false); - expect(jQuery.fn.hide).toHaveBeenCalled(); - expect(jQuery.fn.show).not.toHaveBeenCalled(); - expect(this.sidePanel.eventEmitter.publish).toHaveBeenCalledWith('ADD_CLASS.'+this.sidePanel.windowId, 'focus-max-width'); - expect(this.sidePanel.eventEmitter.publish).toHaveBeenCalledWith('HIDE_ICON_TOC.'+this.sidePanel.windowId); - }); - }); - }); - }); -}); diff --git a/spec/widgets/statusBar.test.js b/spec/widgets/statusBar.test.js deleted file mode 100644 index 43ca1d8be105ec59eb442cd70063030c58026ec7..0000000000000000000000000000000000000000 --- a/spec/widgets/statusBar.test.js +++ /dev/null @@ -1,20 +0,0 @@ -describe('WidgetStatusBar', function() { - var subject; - beforeEach(function() { - subject = new Mirador.WidgetStatusBar({}) - }); - - afterEach(function() { - delete subject; - }); - - describe('Initialization', function() { - it('should initialize', function() { - expect(true).toBe(true); //Force beforeEach() setup to run - }); - }); - - xdescribe('', function() { - - }); -}); diff --git a/spec/widgets/tabs.test.js b/spec/widgets/tabs.test.js deleted file mode 100644 index df5428dc6b66e5518f1948b6482352dbe33b5bf6..0000000000000000000000000000000000000000 --- a/spec/widgets/tabs.test.js +++ /dev/null @@ -1,167 +0,0 @@ -describe('Tabs', function() { - var subject; - beforeEach(function() { - jQuery('body').append('<div id="mytabs"></div>'); - this.sandbox = jQuery('#mytabs'); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.eventEmitter = new Mirador.EventEmitter(); - this.tabList = [{ - name : 'toc', - options : { - available: true, - id:'tocTab', - label:'Index' - } - }, - { - name : 'layers', - options : { - available: true, - id:'layersTab', - label:'Layers' - } - }]; - this.tabs = new Mirador.Tabs({ - appendTo: this.sandbox, - windowId: this.windowId, - tabs: this.tabList, - eventEmitter: this.eventEmitter - }); - subject = this.tabs; - }); - - afterEach(function() { - delete this.tabs; - this.sandbox.remove(); - }); - - describe('Initialization', function() { - it('should initialize with multiple tabs', function() { - expect(true).toBe(true); //Force beforeEach() to run - expect($('.tab').length).toEqual(2); - }); - it('should initialize with Mirador defaults', function() { - this.sandbox.html(''); - this.tabs = new Mirador.Tabs({ - appendTo: this.sandbox, - windowId: this.windowId, - tabs: [{ - name : 'toc', - options : { - available: true, - id:'tocTab', - label:'Index' - } - }, - { - name : 'layers', - options : { - available: false, - id:'layersTab', - label:'Layers' - } - }], - eventEmitter: this.eventEmitter - }); - subject = this.tabs; - expect($('.tab').length).toEqual(0); - }); - }); - - describe('state', function() { - var target_state - beforeEach(function() { - target_state = {}; - jQuery.extend(target_state, subject.tabState, { - additional_key: true - }); - }); - it('should return the state as-is when given no arguments', function() { - expect(subject.state()).toEqual(subject.tabState); - expect(subject.state()).not.toEqual(target_state); - }); - it('should set and return the new state when given arguments', function() { - expect(subject.state(target_state, true)).toEqual(target_state); - expect(subject.state()).toEqual(target_state); - }); - it('should publish a annotationsTabStateUpdated event on non-initial setup', function() { - spyOn(this.eventEmitter, 'publish'); - expect(subject.state(target_state, false)).toEqual(target_state); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('tabStateUpdated.' + this.windowId, target_state); - expect(subject.state()).toEqual(target_state); - }); - }); - - describe('tabSelected', function() { - jQuery.each([0, 1], function(k, i) { - it('should switch to tab ' + i, function() { - subject.tabSelected(i); - expect(subject.state().selectedTabIndex).toEqual(i); - }); - }); - }); - - describe('getTemplateData', function() { - it('returns annotation and TOC tab info', function() { - expect(Object.keys(subject.getTemplateData())).toEqual(['annotationsTab', 'tocTab', 'searchTab']); - }); - }); - - describe('listenForActions', function() { - it('should re-render upon a tabStateUpdated event', function() { - spyOn(subject, 'render'); - this.eventEmitter.publish('tabStateUpdated.' + this.windowId, { stuff: 'dummyData' }); - expect(subject.render).toHaveBeenCalledWith({stuff:'dummyData'}); - }); - it('should re-select tabs upon a tabSelected event', function() { - spyOn(subject, 'tabSelected'); - this.eventEmitter.publish('tabSelected.' + this.windowId, 2); - expect(subject.tabSelected).toHaveBeenCalledWith(2); - }); - }); - - describe('bindEvents', function() { - it('should fire tabSelected for clicking on a tab', function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - jQuery.each([0, 1], function(_, i) { - subject.element.find('.tab').eq(i).click(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('tabSelected.' + subject.windowId, i); - expect(subject.state().selectedTabIndex).toEqual(i); - }); - }); - }); - - describe('render', function() { - describe('Re-renders', function() { - it('should change tab selection', function() { - subject.render({ - tabs : this.tabList, - selectedTabIndex: 1 - }); - expect($('.tab').first()).not.toHaveClass('selected'); - expect($('.tab').eq(1)).toHaveClass('selected'); - }); - }); - describe('From scratch', function() { - beforeEach(function() { - this.sandbox.html(''); - subject.element = null; - }); - it('should hide tab selection if only one is available', function() { - this.tabList[1].options.available = false; - subject.hasStructures = false; - spyOn(subject.eventEmitter, 'publish'); - subject.render({ - tabs: this.tabList, - selectedTabIndex: 0 - }); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('sidePanelVisibilityByTab.'+subject.windowId, false); - expect(subject.element.find('.tab')).not.toBeInDOM(); - }); - }); - }); - - xdescribe('toggle', function() { - - }); -}); diff --git a/spec/widgets/thumbnailsView.test.js b/spec/widgets/thumbnailsView.test.js deleted file mode 100644 index a3149bd8e79646b2e3e6c5ea78bd3de4f3cdd038..0000000000000000000000000000000000000000 --- a/spec/widgets/thumbnailsView.test.js +++ /dev/null @@ -1,313 +0,0 @@ -describe('ThumbnailsView', function () { - var subject; - - beforeEach(function() { - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.viewContainer = document.createElement('div', { - class: 'view-container' - }); - this.fixture = getJSONFixture('Richardson7manifest.json'); - this.manifest = new Mirador.Manifest( - this.fixture['@id'], 'IIIF', this.fixture - ); - this.appendTo = this.viewContainer; - this.eventEmitter = new Mirador.EventEmitter; - this.imagesList = this.manifest.getCanvases(); - this.canvasControls = jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS.windowSettings.canvasControls - ); - this.state = state = new Mirador.SaveController(jQuery.extend( - true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter: this.eventEmitter} - )); - this.windowId = '380c9e54-7561-4010-a99f-f132f5dc13fd'; - this.thumbnailsView = new Mirador.ThumbnailsView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState - }); - subject = this.thumbnailsView; - }); - - afterEach(function() { - delete this.thumbnailsView; - }); - - describe('Initialization', function () { - it('should initialize', function () { - expect(true).toBe(true); // Force initial beforeEach() to run - expect(subject.currentImgIndex).toEqual(0); - }); - it('should initialize with a defined canvas to show', function() { - this.thumbnailsView = new Mirador.ThumbnailsView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - canvasID: this.imagesList[3]['@id'] - }); - subject = this.thumbnailsView; - expect(subject.currentImgIndex).toEqual(3); - }); - }); - - describe('r-t-l viewing', function() { - it('should add proper CSS to list items, floating right', function() { - var thumbnailsView = new Mirador.ThumbnailsView({ - manifest: this.manifest, - appendTo: this.appendTo, - windowId: this.windowId, - eventEmitter: this.eventEmitter, - imagesList: this.imagesList, - imagesListLtr: this.imagesList.concat(), - vDirectionStatus: 'rtl', - state: this.state, - bottomPanelAvailable: true, - annoEndpointAvailable: false, - canvasControls: this.canvasControls, - annotationState: this.canvasControls.annotations.annotationState, - canvasId: this.imagesList[3]['@id'] - }); - - expect(jQuery(thumbnailsView.appendTo).find('.thumbnail-view li')).toHaveClass('thumbnail-rtl'); - }); - }); - - describe('loadContent', function () { - beforeEach(function() { - this.imagesList[this.imagesList.length-1].width = 0; // Zero out width of last canvas, as a test - }); - it('should add template to appendTo', function() { - jQuery(subject.appendTo).html(""); - subject.loadContent(); - expect(jQuery(subject.appendTo).find('.thumbnail-image').length).toEqual(this.imagesList.length); - }); - }); - - describe('updateImage', function () { - var canvas_id, selector; - it('should reapply highlighting correctly', function() { - canvas_id = this.imagesList[5]['@id']; - subject.updateImage(canvas_id); - selector = "img[data-image-id='"+canvas_id+"']"; - expect(jQuery(subject.element).find('img').first().is('.highlight')).toBe(false); - expect(jQuery(subject.element).find(selector).is('.highlight')).toBe(true); - }); - }); - - describe('updateFocusImages', function () { - var canvas_ids, selector; - it('should reapply highlighting correctly', function() { - canvas_ids = [this.imagesList[5]['@id'], this.imagesList[6]['@id']]; - subject.updateFocusImages(canvas_ids); - selector = "img[data-image-id='"+this.imagesList[5]['@id']+"']"; - expect(jQuery(subject.element).find('img').first().is('.highlight')).toBe(false); - expect(jQuery(subject.element).find(selector).is('.highlight')).toBe(true); - selector = "img[data-image-id='"+this.imagesList[6]['@id']+"']"; - expect(jQuery(subject.element).find(selector).is('.highlight')).toBe(true); - }); - }); - - describe('currentImageChanged', function () { - it('should scroll to make the highlighted item visible', function(done) { - subject.updateImage(this.imagesList[12]['@id']); - subject.currentImageChanged(); - setTimeout(function() { - expect(subject.element.scrollLeft()).not.toBeLessThan(subject.element.find('.highlight').position().left); - done(); - }, 1000); - }); - it('should scroll on BookView', function(done) { - var windowObject = { - viewType: 'BookView' - }; - spyOn(subject.state, 'getWindowObjectById').and.returnValue(windowObject); - subject.updateImage(this.imagesList[12]['@id']); - subject.currentImageChanged(); - setTimeout(function() { - expect(subject.element.scrollLeft()).not.toBeLessThan(subject.element.find('.highlight').position().left); - done(); - }, 1000); - }); - }); - - describe('listenForActions', function() { - it('should respond to currentCanvasIDUpdated broadcasts', function() { - spyOn(subject, 'currentImageChanged'); - this.eventEmitter.publish('currentCanvasIDUpdated.' + this.windowId); - expect(subject.currentImageChanged).toHaveBeenCalled(); - }); - it('should respond to windowResize', function(done) { - spyOn(subject, 'loadImages'); - this.eventEmitter.publish('windowResize'); - setTimeout(function() { - expect(subject.loadImages).toHaveBeenCalled(); - done(); - }, 200); - }) - }); - - describe('bindEvents', function () { - it('should make images fade in after loading', function(done) { - spyOn(jQuery.fn, 'hide').and.callThrough(); - spyOn(jQuery.fn, 'fadeIn').and.callThrough(); - jQuery(subject.element).find('img').first().trigger('load'); - setTimeout(function() { - expect(jQuery.fn.hide).toHaveBeenCalled(); - expect(jQuery.fn.fadeIn).toHaveBeenCalledWith(jasmine.any(Number), jasmine.any(Function)); - done(); - }, 800); - }); - it('should call loadImages when scrolling', function() { - spyOn(subject, 'loadImages'); - expect(subject.loadImages).not.toHaveBeenCalled(); - jQuery(subject.element).trigger('scroll'); - expect(subject.loadImages).toHaveBeenCalled(); - }); - it('should change canvases when a thumbnail is clicked', function() { - spyOn(this.eventEmitter, 'publish'); - jQuery(subject.element).find('.thumbnail-image').first().click(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('SET_CURRENT_CANVAS_ID.' + this.windowId, this.imagesList[0]['@id']); - }); - }); - - describe('toggle', function() { - beforeEach(function() { - spyOn(subject, 'show'); - spyOn(subject, 'hide'); - }); - it('should call show for true', function() { - subject.toggle(true); - expect(subject.show).toHaveBeenCalled(); - expect(subject.hide).not.toHaveBeenCalled(); - }); - it('should call hide for false', function() { - subject.toggle(false); - expect(subject.show).not.toHaveBeenCalled(); - expect(subject.hide).toHaveBeenCalled(); - }); - }); - - describe('loadImages', function () { - it('should load visible images only', function() { - var images_loaded = 0; - spyOn(Mirador, 'isOnScreen').and.callFake(function() { - return ++images_loaded > 2; - }); - spyOn(subject, 'loadImage'); - subject.loadImages(); - expect(subject.loadImage).toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(String)); - expect(subject.loadImage.calls.count()).toEqual(this.imagesList.length-2); - }); - }); - - describe('loadImage', function () { - var imageElement, spyImagePromise; - var url = "http://www.test.org/iiif/00001/full/full/0/default.jpg"; - beforeEach(function() { - imageElement = document.createElement('img'); - spyImagePromise = jQuery.Deferred(); - spyOn(Mirador, 'createImagePromise').and.returnValue(spyImagePromise); - }); - it('should set src after promise is fulfilled', function() { - subject.loadImage(imageElement, url); - spyImagePromise.resolve(url); - expect(jQuery(imageElement).attr('src')).toEqual(url); - }); - }); - - describe('reloadImages', function () { - it('should set attributes', function() { - spyOn(jQuery.fn, 'attr').and.callThrough(); - subject.reloadImages(200, false); - expect(jQuery.fn.attr).toHaveBeenCalledWith('height', 200); - expect(jQuery.fn.attr).toHaveBeenCalledWith('width', jasmine.any(Number)); - expect(jQuery.fn.attr).toHaveBeenCalledWith('src', ''); - }); - it('should trigger show when requested', function() { - spyOn(subject, 'show'); - subject.reloadImages(150, true); - expect(subject.show).toHaveBeenCalled(); - }); - }); - - describe('hide', function () { - it('should hide the thumbnailsView', function () { - spyOn(jQuery.fn, 'hide'); - subject.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - }); - it('should hide at the parent level if embedded', function() { - var dummyParent = document.createElement('span'); - subject.panel = { panel: "fake" }; - spyOn(subject.element, 'parent').and.returnValue(dummyParent); - spyOn(jQuery.fn, 'hide'); - subject.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - }); - }); - - describe('show', function () { - it('should show the thumbnailsView', function () { - spyOn(jQuery.fn, 'show'); - subject.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - }); - it('should load content when fully shown', function(done) { - spyOn(subject, 'loadImages'); - subject.show(); - setTimeout(function() { - expect(subject.loadImages).toHaveBeenCalled(); - done(); - }, 400); - }); - it('should show at the parent level if embedded', function() { - var dummyParent = document.createElement('span'); - subject.panel = { panel: "fake" }; - spyOn(subject.element, 'parent').and.returnValue(dummyParent); - spyOn(jQuery.fn, 'show'); - subject.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - }); - }); - - - describe('adjustWidth', function() { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should publish REMOVE_CLASS event when hasClass is true', function() { - subject.adjustWidth('xekko', true); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_CLASS.'+this.windowId, 'xekko'); - }); - it('should publish ADD_CLASS event when hasClass is false', function() { - subject.adjustWidth('xekko', false); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_CLASS.'+this.windowId, 'xekko'); - }); - }); - - describe('adjustHeight', function() { - it('should remove class when hasClass is true', function() { - subject.element.addClass('xekko'); - subject.adjustHeight('xekko', true); - expect(subject.element.hasClass('xekko')).toBe(false); - }); - it('should add class when hasClass is false', function() { - subject.element.removeClass('xekko'); - subject.adjustHeight('xekko', false); - expect(subject.element.hasClass('xekko')).toBe(true); - }); - }); -}); diff --git a/spec/widgets/toc.test.js b/spec/widgets/toc.test.js deleted file mode 100644 index 052df26a8cccb5efeb7204a103133d704ac21c00..0000000000000000000000000000000000000000 --- a/spec/widgets/toc.test.js +++ /dev/null @@ -1,246 +0,0 @@ - -describe('Table of Contents', function() { - beforeEach(function(){ - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - - this.eventEmitter = new Mirador.EventEmitter(); - this.v1SimpleStructures = getJSONFixture('simpleStructuresFixtureV1.json'), - this.v1SimpleStructuresTemplateData = '[{"@id":"http://www.example.org/iiif/book1/range/r1.json","@type":"sc:Range","label":"Introduction","canvases":["http://www.example.org/iiif/book1/canvas/p1.json"],"id":"http://www.example.org/iiif/book1/range/r1.json","within":"root","level":0,"children":[{"@id":"http://www.example.org/iiif/book1/range/r2.json","@type":"sc:Range","label":"Part 1","within":"http://www.example.org/iiif/book1/range/r1.json","canvases":["http://www.example.org/iiif/book1/canvas/p2.json","http://www.example.org/iiif/book1/canvas/p3.json#xywh=0,0,750,300"],"id":"http://www.example.org/iiif/book1/range/r2.json","level":1}]}]', - this.simpleStructuresElement = '<ul class="toc"><li class="leaf-item"><h2><a class="toc-link" data-rangeid="http://www.example.org/iiif/book1/range/r2.json"><i class="fa fa-caret-right toc-caret"></i><i class="fa fa-certificate star"></i><span>Part 1</span></a></h2></li><li></li></ul>'; - this.v2SimpleStructures = getJSONFixture('simpleStructuresFixtureV2.json'), - // v21SimpleStructures = getJSONFixture('simpleStructuresFixtureV21.json'), - this.realisticV1 = getJSONFixture('Richardson7manifest.json'), - this.realisticV2 = getJSONFixture('BNF-condorcet-florus-dispersus-manifest.json'); - // this.realisticV21 = {}, - - this.sandbox = sandbox(); - - }); - - afterEach(function() { - }); - - describe('Initialisation', function(){ - - it('should render a table of contents element', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(this.sandbox.find('.toc')).toExist(); - expect(testToc.structures.length).toEqual(2); - }); - - it('should assign a range ID to toc link elements', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(this.sandbox.find('.toc-link')).toExist(); - expect(this.sandbox.find('.toc-link').first().data().rangeid).toBe('http://www.example.org/iiif/book1/range/r2.json'); - }); - - it('should render an empty template if there are no structures', function(){ - var testToc = new Mirador.TableOfContents({ - structures: [], - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(this.sandbox.find('.toc')).toExist(); - expect(this.sandbox.find('h2 span')).toContainText(i18next.t('noIndex')); - }); - - it('should set tocData with a cached element for each range', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(Object.keys(testToc.tocData).length).toEqual(2); - expect(testToc.tocData['http://www.example.org/iiif/book1/range/r1.json']).not.toBeUndefined(); - expect(testToc.tocData['http://www.example.org/iiif/book1/range/r2.json']).not.toBeUndefined(); - - expect(testToc.tocData['http://www.example.org/iiif/book1/range/r1.json'].element).not.toBeUndefined(); - expect(testToc.tocData['http://www.example.org/iiif/book1/range/r2.json'].element).not.toBeUndefined(); - }); - }); - - describe('Template data', function() { - xit('should set structures property with children if there is only one "structure"', function() { - }); - - xit('should set structures property with top-level ranges if there is more than one "structure"', function() { - - }); - - it('should return an HTML element from the structures (v1.0)', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(testToc.structures.length).toEqual(2); - expect(testToc.element[0].outerHTML) - .toBe(this.simpleStructuresElement); - }); - - it('should return an HTML element from the structures (v2.0)', function() { - - var testToc = new Mirador.TableOfContents({ - structures: this.v2SimpleStructures.structures, - manifestVersion: '2', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - - expect(testToc.structures.length).toEqual(2); - expect(testToc.element[0].outerHTML) - .toBe(this.simpleStructuresElement); - }); - - xit('should return a tree of ranges from the structures (v2.1)', function() { - - }); - }); - - describe('render conditions', function() { - it('should render the correct selected ranges for the initial canvasID', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v2SimpleStructures.structures, - manifestVersion: '2', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - }); - it('should re-render when the canvasID is updated', function() { - }); - it('should re-render when a caret is clicked', function() { - }); - }); - - describe('Open, closed, selected, unselected states', function() { - it('should set an item to active when one of its child canvases are deemed the "currentCanvasID"', function(){ - }); - it('should close the previous selected range when a new range is selected', function() { - }); - it('should set a toc item to "open" when the caret is clicked', function() { - }); - it('should close the previous selected range when a new range is selected, even when another range has been manually expanded', function(){ - - }); - it('should close the previous selected range when a new range is selected, even when another range inside the parent range of the newly selected range has been manually expanded', function() { - }); - it('should scroll to a newly selected range', function() { - - }); - it('should not scroll to a range that has been toggled open when the selected canvas has not changed', function() { - - }); - }); - - describe('Tab state interactions', function() { - var testToc; - beforeEach(function() { - testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - spyOn(testToc.element, 'show'); - spyOn(testToc.element, 'hide'); - }); - - it('shows the toc element on tabStateUpdated when the selected tab is not the tocTab', function(){ - var data = { - tabs: [{options:{id:'navTab'}}, {options:{id:'tocTab'}}], - selectedTabIndex: 1 - }; - testToc.tabStateUpdated(data); - expect(testToc.element.show).toHaveBeenCalled(); - }); - - it('hides the toc element on tabStateUpdated when the selected tab is the tocTab', function(){ - var data = { - tabs: [{options:{id:'navTab'}}, {options:{id:'tocTab'}}], - selectedTabIndex: 0 - }; - testToc.tabStateUpdated(data); - expect(testToc.element.hide).toHaveBeenCalled(); - }); - }); - - it('should set active', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - testToc.setActive(false); - expect(testToc.active).toBe(false); - testToc.setActive(true); - expect(testToc.active).toBe(true); - }); - - it('should hide', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - spyOn(jQuery.fn, 'hide'); - spyOn(this.eventEmitter, 'publish'); - testToc.hide(); - expect(jQuery.fn.hide).toHaveBeenCalled(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_CLASS.dummyID', 'focus-max-width'); - }); - - it('should show', function() { - var testToc = new Mirador.TableOfContents({ - structures: this.v1SimpleStructures.structures, - manifestVersion: '1', - appendTo: this.sandbox, - windowId: 'dummyID', - canvasID: 1234, - eventEmitter: this.eventEmitter - }); - spyOn(jQuery.fn, 'show'); - spyOn(this.eventEmitter, 'publish'); - testToc.show(); - expect(jQuery.fn.show).toHaveBeenCalled(); - expect(this.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_CLASS.dummyID', 'focus-max-width'); - }); -}); diff --git a/spec/workspace.test.js b/spec/workspace.test.js deleted file mode 100644 index c1e20515cd1f3faa0404a45348812f9a03d85fa7..0000000000000000000000000000000000000000 --- a/spec/workspace.test.js +++ /dev/null @@ -1,230 +0,0 @@ -describe('Workspace', function() { - beforeEach(function(){ - this.eventEmitter = new Mirador.EventEmitter(); - this.viewer = {}; - this.viewerDiv = jQuery('<div/>'); - jasmine.getFixtures().set(this.viewerDiv); - - //register Handlebars helper - Handlebars.registerHelper('t', function(i18n_key) { - var result = i18next.t(i18n_key); - return new Handlebars.SafeString(result); - }); - }); - - describe('splits', function() { - it('should have three siblings instead of two', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x2'), - eventEmitter: this.eventEmitter - }); - expect(this.workspace.layoutDescription.children.length).toEqual(2); - expect(this.workspace.slots.length).toEqual(2); - - this.workspace.splitRight(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children.length).toEqual(3); - expect(this.workspace.slots.length).toEqual(3); - }); - - it('should have new children and structure', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x2'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.layoutDescription.children[0].id; - - expect(this.workspace.slots.length).toBe(2); - - this.workspace.splitDown(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children[0].children.length).toBe(2); - expect(this.workspace.slots.length).toBe(3); - expect(this.workspace.layoutDescription.children[0].children[0].id).toBe(originalId); - }); - - it('should have new children and structure (even if root)', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x1'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.layoutDescription.id; - - expect(this.workspace.layoutDescription.children).toBe(undefined); - expect(this.workspace.slots.length).toBe(1); - - this.workspace.splitRight(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children.length).toEqual(2); - expect(this.workspace.slots.length).toEqual(2); - expect(this.workspace.layoutDescription.children[0].id).toBe(originalId); - }); - - it('should have new children and structure splitting down or up (even if root)', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x1'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.layoutDescription.id; - - expect(this.workspace.layoutDescription.children).toBe(undefined); - expect(this.workspace.slots.length).toBe(1); - - this.workspace.splitDown(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children.length).toEqual(2); - expect(this.workspace.layoutDescription.children[0].type).toBe('row'); - expect(this.workspace.slots.length).toEqual(2); - expect(this.workspace.layoutDescription.children[0].id).toBe(originalId); - }); - }); - - describe('removeNode', function() { - it('should remove a sibling (going from 3 to 2)', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x3'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.layoutDescription.id; - - expect(this.workspace.layoutDescription.children.length).toBe(3); - expect(this.workspace.slots.length).toBe(3); - - var newDescriptionChildrenIds = this.workspace.layoutDescription.children.map(function(child) { - return child.id; - }); - newDescriptionChildrenIds.splice(0,1); - - newSlotIDs = this.workspace.slots.map(function(slot) { - return slot.slotID; - }); - newSlotIDs.splice(0,1); - - this.workspace.removeNode(this.workspace.slots[0]); - - - expect(this.workspace.layoutDescription.children.length).toEqual(2); - expect(this.workspace.slots.length).toEqual(2); - expect(this.workspace.layoutDescription.children.map(function(child) { - return child.id; - })).toEqual(newDescriptionChildrenIds); - expect(this.workspace.slots.map(function(slot) { - return slot.slotID; - })).toEqual(newSlotIDs); - }); - - it('should remove sibling and create new parent with same id as target', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x2'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.slots[1].slotID; - - expect(this.workspace.layoutDescription.children.length).toBe(2); - expect(this.workspace.slots.length).toBe(2); - - this.workspace.splitDown(this.workspace.slots[0]); - var newSlotID = this.workspace.slots[2].slotID; - - this.workspace.removeNode(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children.length).toBe(2); - expect(this.workspace.slots.length).toEqual(2); - expect(this.workspace.layoutDescription.children[0].id).toBe(newSlotID); - expect(this.workspace.slots[1].slotID).toBe(newSlotID); - }); - - xit('should remove sibling and create new parent with same id as target (even if siblings have children)', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x2'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.slots[1].slotID; - - expect(this.workspace.layoutDescription.children.length).toBe(2); - expect(this.workspace.slots.length).toBe(2); - - // split the right slot (column) - this.workspace.splitDown(this.workspace.slots[1]); - var newSlotID = this.workspace.slots[2].slotID; - - // remove the left slot... - this.workspace.removeNode(this.workspace.slots[0]); - - // there should still be 2 slots, since the other column had children - expect(this.workspace.layoutDescription.children.length).toBe(2); - expect(this.workspace.slots.length).toEqual(2); - expect(this.workspace.layoutDescription.children[1].id).toBe(newSlotID); - expect(this.workspace.slots[1].slotID).toBe(newSlotID); - }); - - xit('should remove sibling and create new parent with same id as target (even if root)', function() { - this.workspace = new Mirador.Workspace({ - parent: this.viewer, //viewer - appendTo: this.viewerDiv, - layoutDescription: Mirador.layoutDescriptionFromGridString('1x2'), - eventEmitter: this.eventEmitter - }); - var originalId = this.workspace.slots[1].slotID; - - expect(this.workspace.layoutDescription.children.length).toBe(2); - expect(this.workspace.slots.length).toBe(2); - - this.workspace.removeNode(this.workspace.slots[0]); - - expect(this.workspace.layoutDescription.children).toBe(undefined); - expect(this.workspace.slots.length).toEqual(1); - expect(this.workspace.layoutDescription.id).toBe(originalId); - expect(this.workspace.slots[0].slotID).toBe(originalId); - }); - - }); - - xdescribe('Adding Windows', function() { - var mockManifest = { - - }; - var windowConfig = { - - }; - expect(this.workspace.windows.length).toBe(0); - this.workspace.addWindow(windowConfig); - expect(this.workspace.windows.length).toBe(1); - }); - - describe('Removing Windows', function() { - - }); - - xdescribe('Resetting Layout', function() { - var mockManifest = { - - }; - var windowConfig = { - - }; - expect(this.workspace.windows.length).toBe(0); - this.workspace.addWindow(windowConfig); - this.workspace.addWindow(windowConfig); - this.workspace.addWindow(windowConfig); - expect(this.workspace.windows.length).toBe(3); - this.resetLayout('1x2'); - expect(this.workspace.windows.length).toBe(2); - expect(this.workspace.slots.length).toBe(2); - expect(this.workspace.slots[0].window).not().toBe(null); - }); -}); diff --git a/spec/workspaces/slot.test.js b/spec/workspaces/slot.test.js deleted file mode 100644 index 17633bf4d74b715e495bf6035545fc3cbc6be561..0000000000000000000000000000000000000000 --- a/spec/workspaces/slot.test.js +++ /dev/null @@ -1,252 +0,0 @@ -describe('Slot', function () { - var subject; - beforeEach(function () { - var windowElement = jQuery('<div id="MOCK_WINDOW_1"/>'); - this.appendTo = jQuery('<div/>').append(windowElement); - this.eventEmitter = new Mirador.EventEmitter(); - - var mockWindow = { - id: 'MOCK_WINDOW_1', - element: windowElement - }; - - var windowConfig = { - state: new Mirador.SaveController(jQuery.extend(true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter:this.eventEmitter})) - }; - - jasmine.getJSONFixtures().fixturesPath = 'spec/fixtures'; - this.slot = new Mirador.Slot({ - window: mockWindow, - eventEmitter: this.eventEmitter, - state: windowConfig.state, - layoutAddress: '1,1' - }); - subject = this.slot; - }); - - describe('listenForActions', function () { - beforeEach(function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should respond to layoutChanged', function() { - subject.eventEmitter.publish('layoutChanged', '2x2'); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('windowSlotAddressUpdated', { - id: subject.window.id, - slotAddress: '1,1' - }); - }); - it('should respond to HIDE_REMOVE_SLOT', function() { - spyOn(jQuery.fn, 'hide'); - subject.eventEmitter.publish('HIDE_REMOVE_SLOT'); - expect(jQuery.fn.hide).toHaveBeenCalled(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('HIDE_REMOVE_OBJECT.MOCK_WINDOW_1'); - }); - it('should respond to SHOW_REMOVE_SLOT', function() { - spyOn(jQuery.fn, 'show'); - subject.eventEmitter.publish('SHOW_REMOVE_SLOT'); - expect(jQuery.fn.show).toHaveBeenCalled(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('SHOW_REMOVE_OBJECT.MOCK_WINDOW_1'); - }); - it('should respond to ADD_ITEM_FROM_WINDOW', function() { - spyOn(subject, 'addItem'); - subject.eventEmitter.publish('ADD_ITEM_FROM_WINDOW', 'MOCK_WINDOW_1'); - expect(subject.addItem).toHaveBeenCalled(); - }); - it('should respond to REMOVE_SLOT_FROM_WINDOW', function() { - subject.eventEmitter.publish('REMOVE_SLOT_FROM_WINDOW', 'MOCK_WINDOW_1'); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_NODE', subject); - }); - jQuery.each(['RIGHT', 'LEFT', 'DOWN', 'UP'], function(_, dir) { - it('should respond to SPLIT_' + dir + '_FROM_WINDOW', function() { - subject.eventEmitter.publish('SPLIT_' + dir + '_FROM_WINDOW', 'MOCK_WINDOW_1'); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('SPLIT_' + dir, subject); - }); - }); - }); - - describe('bindEvents', function () { - it('should add item when Add Item is clicked', function() { - spyOn(subject, 'addItem').and.callThrough(); - subject.element.find('.addItemLink').click(); - expect(subject.addItem).toHaveBeenCalled(); - }); - it('should remove itself when Remove Slot is clicked', function() { - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - subject.element.find('.remove-slot-option').click(); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('REMOVE_NODE', subject); - }); - it('should receive a drop', function() { - spyOn(subject, 'dropItem'); - subject.element.trigger('drop'); - expect(subject.dropItem).toHaveBeenCalled(); - }); - it('should prevent defaults on drops', function() { - var spyDragOver = spyOnEvent(subject.element, 'dragover'), - spyDragEnter = spyOnEvent(subject.element.find('.dropMask'), 'dragenter'), - spyDragLeave = spyOnEvent(subject.element.find('.dropMask'), 'dragleave'); - subject.element.trigger('dragover'); - expect(spyDragOver).toHaveBeenPrevented(); - expect(subject.element.find('.dropMask')).toExist(); - subject.element.find('.dropMask').trigger('dragenter'); - expect(spyDragEnter).toHaveBeenPrevented(); - expect(subject.element).toHaveClass('draggedOver'); - subject.element.find('.dropMask').trigger('dragleave'); - expect(spyDragLeave).toHaveBeenPrevented(); - expect(subject.element).not.toHaveClass('draggedOver'); - }); - }); - - describe('dropItem', function () { - var getData, getAsString, mockEvent; - beforeEach(function() { - getData = ""; - getAsString = ""; - mockEvent = { - preventDefault: jasmine.createSpy('preventDefault'), - originalEvent: { - dataTransfer: { - getData: jasmine.createSpy('getData').and.callFake(function() { return getData; }), - items: [ { getAsString: jasmine.createSpy('getAsString').and.callFake(function(f) { return f(getAsString); }) } ] - } - } - }; - spyOn(subject, 'handleDrop'); - }); - it('should handle dropped URLs', function() { - getData = "http://text.url.net"; - subject.dropItem(mockEvent); - expect(mockEvent.preventDefault).toHaveBeenCalled(); - expect(subject.handleDrop).toHaveBeenCalledWith('http://text.url.net'); - }); - it('should handle dropped files', function() { - getAsString = "http://text2.url.net"; - subject.dropItem(mockEvent); - expect(mockEvent.preventDefault).toHaveBeenCalled(); - expect(subject.handleDrop).toHaveBeenCalledWith('http://text2.url.net') - }); - }); - - describe('handleDrop', function() { - var manifestsState, manifestUrl, canvasUrl, imageInfoUrl, collectionUrl, fullUrl, fixture, fullFixture; - beforeEach(function() { - manifestsState = {}; - manifestUrl = 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093'; - canvasUrl = 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093/canvas/canvas-5982052.json'; - imageInfoUrl = 'https://images-dev.harvardx.harvard.edu/ids/iiif/5982052/info.json'; - collectionUrl = 'https://iiif.test.net/collection.json'; - fixture = { '@id': 'https://oculus-dev.harvardx.harvard.edu/manifests/drs:5981093' }; - fullFixture = getJSONFixture('Richardson7manifest.json'); - spyOn(subject.state, 'getStateProperty').and.callFake(function(arg) { - return manifestsState; - }); - spyOn(subject.eventEmitter, 'publish').and.callThrough(); - }); - it('should handle manifest-only URLs (not cached)', function() { - subject.handleDrop(manifestUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [manifestUrl, '(Added from URL)']); - var mani = new Mirador.Manifest(manifestUrl, 'IIIF', fullFixture); - subject.eventEmitter.publish('manifestReceived', mani); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_WINDOW', { - manifest: mani, - slotAddress: '1,1' - }); - }); - it('should handle manifest-only URLs (cached)', function() { - manifestsState[manifestUrl] = fixture; - subject.handleDrop(manifestUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_WINDOW', { - manifest: fixture, - slotAddress: '1,1' - }); - }); - it('should handle manifest URLs with canvas (not cached)', function() { - fullUrl = 'http://projectmirador.org?manifest=' + manifestUrl + '&canvas=' + canvasUrl; - subject.handleDrop(fullUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [manifestUrl, '(Added from URL)']); - var mani = new Mirador.Manifest(manifestUrl, 'IIIF', fullFixture); - subject.eventEmitter.publish('manifestReceived', mani); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_WINDOW', { - manifest: mani, - slotAddress: '1,1', - canvasID: canvasUrl, - viewType: 'ImageView' - }); - }); - it('should handle manifest URLs with canvas (cached)', function() { - fullUrl = 'http://projectmirador.org?manifest=' + manifestUrl + '&canvas=' + canvasUrl; - manifestsState[manifestUrl] = fixture; - subject.handleDrop(fullUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_WINDOW', { - manifest: fixture, - slotAddress: '1,1', - canvasID: canvasUrl, - viewType: 'ImageView' - }); - }); - it('should handle single-image URLs', function() { - fullUrl = 'http://projectmirador.org?canvasId=' + canvasUrl + '&image=' + imageInfoUrl; - subject.handleDrop(fullUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [imageInfoUrl, '(Added from URL)']); - }); - it('should handle collection URLs', function() { - spyOn(jQuery, 'getJSON').and.returnValue({ - done: function(f) { - f({ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@id": collectionUrl, - "@type": "sc:Collection", - "label": "Dummy collection", - "manifests": [ - { - "@id": manifestUrl, - "@type": "sc:Manifest", - "label": "Richardson 7 fixture" - }, - { - "@id": "http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/manifest.json", - "@type": "sc:Manifest", - "label": "BNF fixture" - } - ] - }, {}, {}); - } - }); - fullUrl = 'http://projectmirador.org?collection=' + collectionUrl; - subject.handleDrop(fullUrl); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', [manifestUrl, '(Added from URL)']); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', ["http://demos.biblissima-condorcet.fr/iiif/metadata/florus-dispersus/manifest.json", '(Added from URL)']); - }); - }); - - it('clearSlot', function () { - subject.clearSlot(); - expect(subject.window).toBeUndefined(); - }); - - it('getAddress', function () { - expect(subject.getAddress()).toEqual(subject.layoutAddress); - }); - - it('addItem', function () { - subject.focused = false; - spyOn(subject.eventEmitter, 'publish'); - subject.addItem(); - expect(subject.focused).toBe(true); - expect(subject.eventEmitter.publish).toHaveBeenCalledWith('ADD_SLOT_ITEM', subject); - }); - - it("shouldn't break when slot does not contain a window", function () { - delete this.slot.window; - this.eventEmitter.publish('windowRemoved', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('layoutChanged', {}); - this.eventEmitter.publish('HIDE_REMOVE_SLOT'); - this.eventEmitter.publish('SHOW_REMOVE_SLOT'); - this.eventEmitter.publish('ADD_ITEM_FROM_WINDOW', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('REMOVE_SLOT_FROM_WINDOW', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('SPLIT_RIGHT_FROM_WINDOW', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('SPLIT_LEFT_FROM_WINDOW', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('SPLIT_DOWN_FROM_WINDOW', 'MOCK_WINDOW_1'); - this.eventEmitter.publish('SPLIT_UP_FROM_WINDOW', 'MOCK_WINDOW_1'); - expect(this.slot.window).toBe(undefined); // Just checking all the above code didn't fail. - }); -}); diff --git a/spec/workspaces/window.test.js b/spec/workspaces/window.test.js deleted file mode 100644 index 49acfcaee5d49fb85706e0f9934f5748cccd24f0..0000000000000000000000000000000000000000 --- a/spec/workspaces/window.test.js +++ /dev/null @@ -1,224 +0,0 @@ -describe('Window', function() { - describe('Basic Operation', function() { - beforeEach(function() { - this.eventEmitter = new Mirador.EventEmitter(); - this.mockedEventEmitter = new MockEventEmitter(this.eventEmitter); - this.appendTo = jQuery('<div/>'); - Mirador.viewer = { - // all of this global state should be - // removed as soon as possible. - eventEmitter: this.mockedEventEmitter, - annotationEndpoints: [], - workspace: { - slots: [] - } - }; - spyOn(Mirador, 'ThumbnailsView').and.callFake(function() { - this.updateImages = jasmine.createSpy(); - this.toggle = jasmine.createSpy(); - this.adjustHeight = jasmine.createSpy(); - this.updateFocusImages = jasmine.createSpy(); - this.updateImage = jasmine.createSpy(); - }); - spyOn(Mirador, 'ImageView').and.callFake(function() { - this.toggle = jasmine.createSpy(); - this.adjustHeight = jasmine.createSpy(); - this.updateImage = jasmine.createSpy(); - }); - spyOn(Mirador, 'BookView').and.callFake(function() { - this.updateImages = jasmine.createSpy(); - this.toggle = jasmine.createSpy(); - this.adjustHeight = jasmine.createSpy(); - this.updateImage = jasmine.createSpy(); - }); - - var state = new Mirador.SaveController(jQuery.extend(true, {}, Mirador.DEFAULT_SETTINGS, {eventEmitter:this.eventEmitter})); - this.window = new Mirador.Window(jQuery.extend( - true, - {}, - state.getStateProperty('windowSettings'), - { - state: state, - eventEmitter: this.eventEmitter, - manifest: { - jsonLd: { - sequences: [ - { viewingHint: 'paged', - canvases: [{ - '@id': '' - }] - }] - }, - getCanvases: function() { return [{ - // This is an example of one canvas from richardson 7. - label: "(seq. 3)", - width: 4680, - '@type': "sc:Canvas", - images: [{ - resource: { - service: { - profile: "http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1", - '@context': "http://iiif.io/api/image/1/context.json", - '@id': "https://ids.lib.harvard.edu/ids/iiif/5981098" - }, - format: "image/jpeg", - height: 5112, - width: 4680, - '@id': "https://ids.lib.harvard.edu/ids/iiif/5981098/full/full/0/native.jpg", - '@type': "dctypes:Image" - }, - on: "https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", - motivation: "sc:painting", - '@id': "https://iiif.lib.harvard.edu/manifests/drs:5981093/annotation/anno-5981098.json", - '@type': "oa:Annotation" - } - ], - height: 5112, - '@id': "https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json", - thumbnail: { - '@id': "https://ids.lib.harvard.edu/ids/iiif/5981098/full/,150/0/native.jpg", - '@type': "dctypes:Image" - } - }, { - '@id': "https://purl.stanford.edu/qm670kv1873/iiif/canvas/image_1", - '@type': "sc:Canvas", - label: "Upper board outside", - height: 2236, - width: 1732, - images: [{ - '@id': "https://purl.stanford.edu/qm670kv1873/iiif/annotation/image_1", - '@type': "oa:Annotation", - motivation: "sc:painting", - resource: { - '@id': "https://stacks.stanford.edu/image/iiif/qm670kv1873%2FW168_000001_300/full/full/0/default.jpg", - '@type': "dctypes:Image", - format: "image/jpeg", - height: 2236, - width: 1732, - service: { - '@context': "http://iiif.io/api/image/2/context.json", - '@id': "https://stacks.stanford.edu/image/iiif/qm670kv1873%2FW168_000001_300", - profile: "http://iiif.io/api/image/2/level1.json" - } - }, - on: "https://purl.stanford.edu/qm670kv1873/iiif/canvas/image_1" - }] - }]; - }, - getAnnotationsListUrls: function() { - return []; - }, - getStructures: function() { - return []; - }, - getVersion: function() { - return '1'; - }, - getViewingDirection: function() { - return 'right-to-left'; - } - }, - appendTo: this.appendTo, - userButtons: [{ - 'iconClass': 'fa-file-text-o', - 'attributes': { - 'class': 'mirador-icon-text', - 'href': 'http://example.com', - 'target': '_blank' - } - }] - })); - }); - - afterEach(function() { - delete Mirador.viewer; - }); - - describe('Initialisation', function() { - it('should build the canvases index', function() { - expect(this.window.canvases['https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json']).not.toBe('undefined'); - expect(Object.keys(this.window.canvases).length).toEqual(2); - expect(typeof this.window.canvases['https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json'].getBounds).toBe('function'); - }); - it('should place itself in DOM', function() { - expect(true).toBe(true); - expect(this.appendTo.find('.window')).toExist(); - expect(this.appendTo.find('.remove-object-option').css('display')).toBe('none'); - expect(this.appendTo.find('.book-option')).toExist(); - expect(this.appendTo.find('.scroll-option')).toExist(); - var calls = Mirador.ImageView.calls; - expect(calls.count()).toBe(1); - expect(calls.first().args[0].appendTo.is(this.appendTo.find('.view-container'))).toBe(true); - }); - - it('should place default buttons in DOM', function(){ - expect(this.appendTo.find('.mirador-icon-view-type')).toExist(); - expect(this.appendTo.find('.mirador-icon-metadata-view')).toExist(); - expect(this.appendTo.find('.mirador-osd-fullscreen')).toExist(); - }); - - it('should place user buttons in DOM', function(){ - expect(this.appendTo.find('.mirador-icon-text')).toExist(); - expect(this.appendTo.find('.mirador-icon-text').attr('href')).toBe('http://example.com'); - expect(this.appendTo.find('.mirador-icon-text').attr('target')).toBe('_blank'); - expect(this.appendTo.find('.mirador-icon-text').has('i.fa.fa-lg.fa-fw.fa-file-text-o').length).toBe(1); - }); - }); - - describe('Menu Events', function() { - xit('should change to book view when button is clicked', function() { - expect(this.appendTo.find('.book-option')).toExist(); - expect(this.window.focusModules.BookView).toBe(null); - this.appendTo.find('.book-option').trigger('click'); - var calls = Mirador.BookView.calls; - var bottomPanelCalls = this.window.bottomPanel.updateFocusImages.calls; - expect(calls.count()).toBe(1); - expect(bottomPanelCalls.count()).toBe(1); - }); - }); - - describe('r-t-l viewing', function() { - it('causes the imagesList ordering to be reversed and the derivative lists to be generated', function() { - expect(this.window.imagesListRtl[0]).toBe(this.window.imagesList[this.window.imagesList.length-1]); - expect(this.window.vDirectionStatus).toBe('rtl'); - }); - }); - - describe('Navigation events', function() { - it('changing the canvasID changes the focused canvasModel', function() { - expect(this.window.canvasID).toEqual('https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json'); - this.window.setCurrentCanvasID('https://purl.stanford.edu/qm670kv1873/iiif/canvas/image_1'); - expect(this.window.canvasID).toEqual('https://purl.stanford.edu/qm670kv1873/iiif/canvas/image_1'); - this.eventEmitter.publish('SET_CURRENT_CANVAS_ID.' + this.window.id, 'https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json'); - expect(this.window.canvasID).toEqual('https://iiif.lib.harvard.edu/manifests/drs:5981093/canvas/canvas-5981098.json'); - }); - }); - - describe('Destroying', function () { - - it('should respond to windowRemoved', function () { - spyOn(this.window,'destroy'); - this.eventEmitter.publish('windowRemoved', this.window.id); - expect(this.window.destroy).toHaveBeenCalled(); - }); - - it('should unsubscribe from all events', function () { - this.window.destroy(); - for(var key in this.window.eventEmitter.events){ - expect(this.window.eventEmitter.events[key]).toBe(0); - } - }); - - it('should remove dom element',function(){ - this.window.destroy(); - expect(this.appendTo.find('.window').length).toBe(0); - }); - - }); - - }); - - describe('Configuration', function() { - - }); -}); diff --git a/src/action-types.js b/src/action-types.js new file mode 100644 index 0000000000000000000000000000000000000000..9783cb967f276c8c5974510e9448cb22646dc649 --- /dev/null +++ b/src/action-types.js @@ -0,0 +1,21 @@ +const ActionTypes = { + FOCUS_WINDOW: 'FOCUS_WINDOW', + ADD_MANIFEST: 'ADD_MANIFEST', + ADD_WINDOW: 'ADD_WINDOW', + NEXT_CANVAS: 'NEXT_CANVAS', + PREVIOUS_CANVAS: 'PREVIOUS_CANVAS', + REMOVE_WINDOW: 'REMOVE_WINDOW', + PICK_WINDOWING_SYSTEM: 'PICK_WINDOWING_SYSTEM', + REQUEST_MANIFEST: 'REQUEST_MANIFEST', + RECEIVE_MANIFEST: 'RECEIVE_MANIFEST', + RECEIVE_MANIFEST_FAILURE: 'RECEIVE_MANIFEST_FAILURE', + SET_CONFIG: 'SET_CONFIG', + UPDATE_CONFIG: 'UPDATE_CONFIG', + REMOVE_MANIFEST: 'REMOVE_MANIFEST', + REQUEST_INFO_RESPONSE: 'REQUEST_INFO_RESPONSE', + RECEIVE_INFO_RESPONSE: 'RECEIVE_INFO_RESPONSE', + RECEIVE_INFO_RESPONSE_FAILURE: 'RECEIVE_INFO_RESPONSE_FAILURE', + REMOVE_INFO_RESPONSE: 'REMOVE_INFO_RESPONSE', +}; + +export default ActionTypes; diff --git a/src/actions/index.js b/src/actions/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ec56ae64a9757709b08108efe0f7ad38a45055b9 --- /dev/null +++ b/src/actions/index.js @@ -0,0 +1,227 @@ +import fetch from 'node-fetch'; +import ActionTypes from '../action-types'; + +/** + * Action Creators for Mirador + * @namespace ActionCreators + */ + + +/** + * setConfig - action creator + * + * @param {Object} config +* @memberof ActionCreators + */ +export function setConfig(config) { + return { type: ActionTypes.SET_CONFIG, config }; +} + +/** + * updateConfig - action creator + * + * @param {Object} config +* @memberof ActionCreators + */ +export function updateConfig(config) { + return { type: ActionTypes.UPDATE_CONFIG, config }; +} + +/** + * focusWindow - action creator + * + * @param {String} windowId + * @memberof ActionCreators + */ +export function focusWindow(windowId) { + return { type: ActionTypes.FOCUS_WINDOW, windowId }; +} + +/** + * addWindow - action creator + * + * @param {Object} options + * @memberof ActionCreators + */ +export function addWindow(options) { + const defaultOptions = { + // TODO: Windows should be a hash with id's as keys for easy lookups + // https://redux.js.org/faq/organizing-state#how-do-i-organize-nested-or-duplicate-data-in-my-state + id: `window-${new Date().valueOf()}`, + canvasIndex: 0, + collectionIndex: 0, + manifestId: null, + rangeId: null, + xywh: [0, 0, 400, 400], + rotation: null, + }; + return { type: ActionTypes.ADD_WINDOW, payload: Object.assign({}, defaultOptions, options) }; +} + +/** + * removeWindow - action creator + * + * @param {String} windowId + * @memberof ActionCreators + */ +export function removeWindow(windowId) { + return { type: ActionTypes.REMOVE_WINDOW, windowId }; +} + +/** + * nextCanvas - action creator + * + * @param {String} windowId + * @memberof ActionCreators + */ +export function nextCanvas(windowId) { + return { type: ActionTypes.NEXT_CANVAS, windowId }; +} + +/** + * previousCanvas - action creator + * + * @param {String} windowId + * @memberof ActionCreators + */ +export function previousCanvas(windowId) { + return { type: ActionTypes.PREVIOUS_CANVAS, windowId }; +} + +/** + * requestManifest - action creator + * + * @param {String} manifestId + * @memberof ActionCreators + */ +export function requestManifest(manifestId) { + return { + type: ActionTypes.REQUEST_MANIFEST, + manifestId, + }; +} + +/** + * receiveManifest - action creator + * + * @param {String} windowId + * @param {Object} manifestJson + * @memberof ActionCreators + */ +export function receiveManifest(manifestId, manifestJson) { + return { + type: ActionTypes.RECEIVE_MANIFEST, + manifestId, + manifestJson, + }; +} + +/** + * receiveManifestFailure - action creator + * + * @param {String} windowId + * @param {String} error + * @memberof ActionCreators + */ +export function receiveManifestFailure(manifestId, error) { + return { + type: ActionTypes.RECEIVE_MANIFEST_FAILURE, + manifestId, + error, + }; +} + +/** + * fetchManifest - action creator + * + * @param {String} manifestId + * @memberof ActionCreators + */ +export function fetchManifest(manifestId) { + return ((dispatch) => { + dispatch(requestManifest(manifestId)); + return fetch(manifestId) + .then(response => response.json()) + .then(json => dispatch(receiveManifest(manifestId, json))) + .catch(error => dispatch(receiveManifestFailure(manifestId, error))); + }); +} + +/** + * removeManifest - action creator + * + * @param {String} manifestId + * @memberof ActionCreators + */ +export function removeManifest(manifestId) { + return { type: ActionTypes.REMOVE_MANIFEST, manifestId }; +} + +/** + * requestInfoResponse - action creator + * + * @param {String} infoId + * @memberof ActionCreators + */ +export function requestInfoResponse(infoId) { + return { + type: ActionTypes.REQUEST_INFO_RESPONSE, + infoId, + }; +} + +/** + * receiveInfoResponse - action creator + * + * @param {String} infoId + * @param {Object} manifestJson + * @memberof ActionCreators + */ +export function receiveInfoResponse(infoId, infoJson) { + return { + type: ActionTypes.RECEIVE_INFO_RESPONSE, + infoId, + infoJson, + }; +} + +/** + * receiveInfoResponseFailure - action creator + * + * @param {String} infoId + * @param {String} error + * @memberof ActionCreators + */ +export function receiveInfoResponseFailure(infoId, error) { + return { + type: ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE, + infoId, + error, + }; +} + +/** + * fetchInfoResponse - action creator + * + * @param {String} infoId + * @memberof ActionCreators + */ +export function fetchInfoResponse(infoId) { + return ((dispatch) => { + dispatch(requestInfoResponse(infoId)); + return fetch(infoId) + .then(response => response.json()) + .then(json => dispatch(receiveInfoResponse(infoId, json))) + .catch(error => dispatch(receiveInfoResponseFailure(infoId, error))); + }); +} + +/** + * removeInfoResponse - action creator + * + * @param {String} infoId + * @memberof ActionCreators + */ +export function removeInfoResponse(infoId) { + return { type: ActionTypes.REMOVE_INFO_RESPONSE, infoId }; +} diff --git a/src/components/App.js b/src/components/App.js new file mode 100644 index 0000000000000000000000000000000000000000..1c9743ca35587e370f9a13301d37639b229e2d9f --- /dev/null +++ b/src/components/App.js @@ -0,0 +1,119 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import { actions } from '../store'; +import Display from './Display'; +import ManifestForm from './ManifestForm'; +import ManifestListItem from './ManifestListItem'; +import Workspace from './Workspace'; +import ns from '../config/css-ns'; + +/** + * This is the top level Mirador component. + * @prop {Object} manifests + */ +class App extends Component { + /** + * constructor - + */ + constructor(props) { + super(props); + this.state = { + lastRequested: '', + }; + + this.setLastRequested = this.setLastRequested.bind(this); + } + + /** + * setLastRequested - Sets the state lastRequested + * + * @private + */ + setLastRequested(requested) { + this.setState({ + lastRequested: requested, + }); + } + + /** + * computedContent - computes the content to be displayed based on logic + * + * @return {type} description + * @private + */ + computedContent() { + const { manifests } = this.props; + const { lastRequested } = this.state; + const manifest = manifests[lastRequested]; + if (manifest) { + if (manifest.isFetching) { + return '☕'; + } + if (manifest.error) { + return manifest.error.message; + } + return JSON.stringify(manifest.json, 0, 2); + } + return 'Nothing Selected Yet'; + } + + /** + * render + * @return {String} - HTML markup for the component + */ + render() { + const { manifests } = this.props; + const { lastRequested } = this.state; + const manifestList = Object.keys(manifests).map(manifest => ( + <ManifestListItem + key={manifest} + manifest={manifest} + /> + )); + return ( + <div className={ns('app')}> + <Workspace /> + <div className={ns('control-panel')}> + <ManifestForm setLastRequested={this.setLastRequested} /> + <ul>{manifestList}</ul> + + <Display + manifest={manifests[lastRequested]} + /> + </div> + </div> + ); + } +} + +App.propTypes = { + manifests: PropTypes.instanceOf(Object).isRequired, +}; + +/** + * mapStateToProps - to hook up connect + * @memberof App + * @private + */ +const mapStateToProps = state => ( + { + manifests: state.manifests, + } +); + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof App + * @private + */ +const mapDispatchToProps = dispatch => ({ + fetchManifest: manifestUrl => ( + dispatch(actions.fetchManifest(manifestUrl)) + ), +}); + +export default connect( + mapStateToProps, + mapDispatchToProps, +)(App); diff --git a/src/components/Display.js b/src/components/Display.js new file mode 100644 index 0000000000000000000000000000000000000000..f9db0dd00071959859696844e527ac7f0f7cd039 --- /dev/null +++ b/src/components/Display.js @@ -0,0 +1,64 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ManifestMetadata from './ManifestMetadata'; +import ns from '../config/css-ns'; + +/** + * Determines how to best display the content (or lack thereof) the manifest + * @private + */ +const displayContent = (manifest) => { + if (manifest) { + if (manifest.isFetching) { + return '☕'; + } + if (manifest.error) { + return manifest.error.message; + } + return <ManifestMetadata manifest={manifest} />; + } + return 'Nothing Selected Yet'; +}; + +/** + * Determines which classes should be used for display, based on the state of + * the manifest + * @memberof Display + * @private + */ +const stateClass = (manifest) => { + if (manifest) { + if (manifest.isFetching) { + return 'fetching'; + } + if (manifest.error) { + return 'error'; + } + return ''; + } + return 'empty'; +}; + + +/** + * Displays a manifest + * @param {object} props + * @param {object} [props.manifest = undefined] + */ +const Display = ({ manifest }) => ( + <div className="Display"> + <div id="exampleManifest" className={ns(stateClass(manifest))}> + {displayContent(manifest)} + </div> + </div> +); + +Display.propTypes = { + manifest: PropTypes.object, // eslint-disable-line react/forbid-prop-types +}; + +Display.defaultProps = { + manifest: undefined, +}; + +export default Display; diff --git a/src/components/ManifestForm.js b/src/components/ManifestForm.js new file mode 100644 index 0000000000000000000000000000000000000000..54f1557e96ec08d11bc9792c6c526d7cdd132d69 --- /dev/null +++ b/src/components/ManifestForm.js @@ -0,0 +1,99 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import { actions } from '../store'; + +/** + * Provides a form for user input of a manifest url + * @prop {Function} fetchManifest + * @prop {Function} setLastRequested + */ +class ManifestForm extends Component { + /** + * constructor - + */ + constructor(props) { + super(props); + this.state = { + formValue: '', + }; + + this.formSubmit = this.formSubmit.bind(this); + this.handleInputChange = this.handleInputChange.bind(this); + } + + /** + * formSubmit - triggers manifest update and sets lastRequested + * @param {Event} event + * @private + */ + formSubmit(event) { + const { fetchManifest, setLastRequested } = this.props; + const { formValue } = this.state; + event.preventDefault(); + fetchManifest(formValue); + setLastRequested(formValue); + } + + /** + * handleInputChange - sets state based on input change. + * @param {Event} event + * @private + */ + handleInputChange(event) { + const that = this; + event.preventDefault(); + that.setState({ + formValue: event.target.value, + }); + } + + /** + * render + * @return {String} - HTML markup for the component + */ + render() { + const { formValue } = this.state; + return ( + <form onSubmit={this.formSubmit}> + <input + value={formValue} + id="manifestURL" + type="text" + onChange={this.handleInputChange} + /> + <button id="fetchBtn" type="submit">FetchManifest</button> + </form> + ); + } +} + +ManifestForm.propTypes = { + fetchManifest: PropTypes.func.isRequired, + setLastRequested: PropTypes.func.isRequired, +}; + +/** + * mapStateToProps - to hook up connect + * @memberof ManifestForm + * @private + */ +const mapStateToProps = () => ( + {} +); + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof ManifestForm + * @private + */ +const mapDispatchToProps = dispatch => ({ + fetchManifest: manifestUrl => ( + dispatch(actions.fetchManifest(manifestUrl)) + ), +}); + +export default connect( + mapStateToProps, + mapDispatchToProps, +)(ManifestForm); diff --git a/src/components/ManifestListItem.js b/src/components/ManifestListItem.js new file mode 100644 index 0000000000000000000000000000000000000000..b67886e8d869abb540943b088ef0246b6dcef84e --- /dev/null +++ b/src/components/ManifestListItem.js @@ -0,0 +1,62 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import { actions } from '../store'; +import ns from '../config/css-ns'; + + +/** + * Handling open button click + */ +const handleOpenButtonClick = (event, manifest, addWindow) => { + addWindow({ manifestId: manifest }); +}; +/** + * Represents an item in a list of currently-loaded or loading manifests + * @param {object} props + * @param {object} [props.manifest = string] + */ + +/** + * Determines which classes should be used for display, based on the state of + * the manifest + * @memberof ManifestListItem + * @private + */ +const ManifestListItem = ({ manifest, addWindow }) => ( + <li className={ns('manifest-list-item')}> + <button type="button" onClick={event => handleOpenButtonClick(event, manifest, addWindow)}> + {manifest} + </button> + </li> +); + +ManifestListItem.propTypes = { + manifest: PropTypes.string.isRequired, // eslint-disable-line react/forbid-prop-types + addWindow: PropTypes.func.isRequired, +}; + +/** + * mapStateToProps - to hook up connect + * @memberof ManifestListItem + * @private + */ +const mapStateToProps = () => ( + {} +); + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof ManifestListItem + * @private + */ +const mapDispatchToProps = dispatch => ({ + addWindow: options => ( + dispatch(actions.addWindow(options)) + ), +}); + +export default connect( + mapStateToProps, + mapDispatchToProps, +)(ManifestListItem); diff --git a/src/components/ManifestMetadata.js b/src/components/ManifestMetadata.js new file mode 100644 index 0000000000000000000000000000000000000000..2f79254a7dfc59c14e0ba3acb81d939237cb6261 --- /dev/null +++ b/src/components/ManifestMetadata.js @@ -0,0 +1,35 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import ns from '../config/css-ns'; + +/** + * ManifestMetadata + * @param {object} window + */ +export default class ManifestMetadata extends Component { + /** + * Renders things + * @param {object} props + */ + render() { + const { manifest } = this.props; + return ( + <div> + <h3> + {manifest.manifestation.getLabel().map(label => label.value)[0]} + </h3> + <div className={ns('description')}> + {manifest.manifestation.getDescription().map(label => label.value)} + </div> + </div> + ); + } +} + +ManifestMetadata.propTypes = { + manifest: PropTypes.object, // eslint-disable-line react/forbid-prop-types +}; + +ManifestMetadata.defaultProps = { + manifest: null, +}; diff --git a/src/components/OpenSeadragonViewer.js b/src/components/OpenSeadragonViewer.js new file mode 100644 index 0000000000000000000000000000000000000000..3709ab33b168ac179a9c375ab803db1fa3d09016 --- /dev/null +++ b/src/components/OpenSeadragonViewer.js @@ -0,0 +1,89 @@ +import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; +import OpenSeadragon from 'openseadragon'; +import miradorWithPlugins from '../lib/miradorWithPlugins'; +import ns from '../config/css-ns'; + +/** + * Represents a OpenSeadragonViewer in the mirador workspace. Responsible for mounting + * and rendering OSD. + */ +class OpenSeadragonViewer extends Component { + /** + * @param {Object} props + */ + constructor(props) { + super(props); + + this.viewer = null; + this.ref = React.createRef(); + } + + /** + * React lifecycle event + */ + componentDidMount() { + const { tileSources } = this.props; + if (!this.ref.current) { + return; + } + this.viewer = new OpenSeadragon({ + id: this.ref.current.id, + preserveViewport: true, + blendTime: 0.1, + alwaysBlend: false, + showNavigationControl: false, + }); + tileSources.forEach(tileSource => this.addTileSource(tileSource)); + } + + /** + */ + componentDidUpdate() { + const { tileSources } = this.props; + tileSources.forEach(tileSource => this.addTileSource(tileSource)); + } + + /** + */ + componentWillUnmount() { + this.viewer.removeAllHandlers(); + } + + /** + */ + addTileSource(tileSource) { + this.viewer.addTiledImage({ + tileSource, + success: (event) => { + }, + }); + } + + /** + * Renders things + */ + render() { + const { window } = this.props; + return ( + <Fragment> + <div + className={ns('osd-container')} + id={`${window.id}-osd`} + ref={this.ref} + /> + </Fragment> + ); + } +} + +OpenSeadragonViewer.defaultProps = { + tileSources: [], +}; + +OpenSeadragonViewer.propTypes = { + tileSources: PropTypes.arrayOf(PropTypes.object), + window: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types +}; + +export default miradorWithPlugins(OpenSeadragonViewer); diff --git a/src/components/ViewerNavigation.js b/src/components/ViewerNavigation.js new file mode 100644 index 0000000000000000000000000000000000000000..a6d989f143db068813cd8de574dcf5242ede5b6a --- /dev/null +++ b/src/components/ViewerNavigation.js @@ -0,0 +1,91 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import miradorWithPlugins from '../lib/miradorWithPlugins'; +import { actions } from '../store'; +import ns from '../config/css-ns'; + +/** + */ +class ViewerNavigation extends Component { + /** + */ + constructor(props) { + super(props); + + this.nextCanvas = this.nextCanvas.bind(this); + this.previousCanvas = this.previousCanvas.bind(this); + } + + /** + */ + nextCanvas() { + const { window, nextCanvas } = this.props; + if (this.hasNextCanvas()) nextCanvas(window.id); + } + + /** + */ + hasNextCanvas() { + const { window, canvases } = this.props; + return window.canvasIndex < canvases.length - 1; + } + + /** + */ + previousCanvas() { + const { window, previousCanvas } = this.props; + if (this.hasPreviousCanvas()) previousCanvas(window.id); + } + + /** + */ + hasPreviousCanvas() { + const { window } = this.props; + return window.canvasIndex > 0; + } + + /** + * Renders things + */ + render() { + return ( + <div className={ns('osd-navigation')}> + <button + type="button" + disabled={!this.hasPreviousCanvas()} + onClick={this.previousCanvas} + > + ‹ + </button> + <button + type="button" + disabled={!this.hasNextCanvas()} + onClick={this.nextCanvas} + > + › + </button> + </div> + ); + } +} + +ViewerNavigation.propTypes = { + canvases: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types + nextCanvas: PropTypes.func.isRequired, + previousCanvas: PropTypes.func.isRequired, + window: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types +}; + + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof ManifestForm + * @private + */ +const mapDispatchToProps = dispatch => ({ + nextCanvas: windowId => dispatch(actions.nextCanvas(windowId)), + previousCanvas: windowId => dispatch(actions.previousCanvas(windowId)), +}); + +export default connect(null, mapDispatchToProps)(miradorWithPlugins(ViewerNavigation)); diff --git a/src/components/Window.js b/src/components/Window.js new file mode 100644 index 0000000000000000000000000000000000000000..f28a3ddeff9f276da7380a7457e338c9dc1fa92d --- /dev/null +++ b/src/components/Window.js @@ -0,0 +1,82 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import ns from '../config/css-ns'; +import WindowBackground from './WindowBackground'; +import WindowTopBar from './WindowTopBar'; +import WindowViewer from './WindowViewer'; + +/** + * Represents a Window in the mirador workspace + * @param {object} window + */ +class Window extends Component { + /** + * Return style attributes + */ + styleAttributes() { + const { window } = this.props; + return { width: `${window.xywh[2]}px`, height: `${window.xywh[3]}px` }; + } + + /** + * renderViewer + * + * @return {String, null} + */ + renderViewer() { + const { manifest, window } = this.props; + if (manifest) { + return ( + <WindowViewer + window={window} + manifest={manifest} + /> + ); + } + return null; + } + + /** + * Renders things + */ + render() { + const { manifest, window } = this.props; + return ( + <div className={ns('window')} style={this.styleAttributes()}> + <WindowTopBar + windowId={window.id} + manifest={manifest} + /> + <WindowBackground + manifest={manifest} + /> + {this.renderViewer()} + </div> + ); + } +} + +Window.propTypes = { + window: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + manifest: PropTypes.object, // eslint-disable-line react/forbid-prop-types +}; + +Window.defaultProps = { + manifest: null, +}; + +/** + * mapStateToProps - used to hook up connect to action creators + * @memberof Window + * @private + */ +const mapStateToProps = ({ windows, manifests }, props) => { + const window = windows.find(win => props.id === win.id); + return { + window, + manifest: manifests[window.manifestId], + }; +}; + +export default connect(mapStateToProps)(Window); diff --git a/src/components/WindowBackground.js b/src/components/WindowBackground.js new file mode 100644 index 0000000000000000000000000000000000000000..9ff70f1904aa9b247af5da7b9a03871ef7bdecb9 --- /dev/null +++ b/src/components/WindowBackground.js @@ -0,0 +1,61 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; + +/** + * Represents a WindowBackground in the mirador workspace + * @param {object} window + */ +class WindowBackground extends Component { + /** + * Fetches IIIF thumbnail URL + */ + thumbnail() { + const { manifest } = this.props; + const thumb = manifest.manifestation.getThumbnail() || { id: 'http://placekitten.com/200/300' }; + return thumb.id; + } + + + /** + * content - based off of manifest state + * + * @return {type} + */ + content(manifest) { + if (!manifest) return null; + switch (manifest.isFetching) { + case true: + return 'spinner'; + case false: + if (manifest.manifestation) { + return <img src={this.thumbnail()} alt="" />; + } + break; + default: + return null; + } + return null; + } + + /** + * Renders things + */ + render() { + const { manifest } = this.props; + return ( + <div> + {this.content(manifest)} + </div> + ); + } +} + +WindowBackground.propTypes = { + manifest: PropTypes.object, // eslint-disable-line react/forbid-prop-types +}; + +WindowBackground.defaultProps = { + manifest: null, +}; + +export default WindowBackground; diff --git a/src/components/WindowTopBar.js b/src/components/WindowTopBar.js new file mode 100644 index 0000000000000000000000000000000000000000..19b7e35664508b44497f789a65e4c051f9df3c55 --- /dev/null +++ b/src/components/WindowTopBar.js @@ -0,0 +1,63 @@ +import React, { Component } from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import { actions } from '../store'; +import WindowTopBarButtons from './WindowTopBarButtons'; +import miradorWithPlugins from '../lib/miradorWithPlugins'; +import ns from '../config/css-ns'; + +/** + * WindowTopBar + */ +class WindowTopBar extends Component { + /** + * titleContent + * + * @return {String} + */ + titleContent() { + const { manifest } = this.props; + if (manifest && manifest.manifestation) { + return manifest.manifestation.getLabel().map(label => label.value)[0]; + } + return ''; + } + + /** + * render + * @return + */ + render() { + const { removeWindow, windowId } = this.props; + return ( + <div className={ns('window-top-bar')}> + <h3>{this.titleContent()}</h3> + <WindowTopBarButtons windowId={windowId} /> + <button type="button" className={ns('window-close')} aria-label="Close Window" onClick={() => removeWindow(windowId)}>×</button> + </div> + ); + } +} + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof ManifestListItem + * @private + */ +const mapDispatchToProps = dispatch => ({ + removeWindow: windowId => ( + dispatch(actions.removeWindow(windowId)) + ), +}); + +WindowTopBar.propTypes = { + manifest: PropTypes.object, // eslint-disable-line react/forbid-prop-types + removeWindow: PropTypes.func.isRequired, + windowId: PropTypes.string.isRequired, +}; + +WindowTopBar.defaultProps = { + manifest: null, +}; + +export default connect(null, mapDispatchToProps)(miradorWithPlugins(WindowTopBar)); diff --git a/src/components/WindowTopBarButtons.js b/src/components/WindowTopBarButtons.js new file mode 100644 index 0000000000000000000000000000000000000000..6bcdef6b45cd95ca78df88b7dd221d597ef62b65 --- /dev/null +++ b/src/components/WindowTopBarButtons.js @@ -0,0 +1,19 @@ +import React, { Component, Fragment } from 'react'; +import miradorWithPlugins from '../lib/miradorWithPlugins'; +/** + * + */ +class WindowTopBarButtons extends Component { + /** + * render + * + * @return {type} description + */ + render() { + return ( + <Fragment /> + ); + } +} + +export default miradorWithPlugins(WindowTopBarButtons); diff --git a/src/components/WindowViewer.js b/src/components/WindowViewer.js new file mode 100644 index 0000000000000000000000000000000000000000..77f77b7fd45e794a444861f6f1f7816f42e2f4b8 --- /dev/null +++ b/src/components/WindowViewer.js @@ -0,0 +1,121 @@ +import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { actions } from '../store'; +import miradorWithPlugins from '../lib/miradorWithPlugins'; +import OpenSeadragonViewer from './OpenSeadragonViewer'; +import ViewerNavigation from './ViewerNavigation'; + +/** + * Represents a WindowViewer in the mirador workspace. Responsible for mounting + * OSD and Navigation + */ +class WindowViewer extends Component { + /** + * @param {Object} props + */ + constructor(props) { + super(props); + + const { manifest } = this.props; + this.canvases = manifest.manifestation.getSequences()[0].getCanvases(); + } + + /** + * componentDidMount - React lifecycle method + * Request the initial canvas on mount + */ + componentDidMount() { + const { fetchInfoResponse } = this.props; + fetchInfoResponse(this.imageInformationUri()); + } + + /** + * componentDidUpdate - React lifecycle method + * Request a new canvas if it is needed + */ + componentDidUpdate(prevProps) { + const { window, fetchInfoResponse } = this.props; + if (prevProps.window.canvasIndex !== window.canvasIndex && !this.infoResponseIsInStore()) { + fetchInfoResponse(this.imageInformationUri()); + } + } + + /** + * infoResponseIsInStore - checks whether or not an info response is already + * in the store. No need to request it again. + * @return [Boolean] + */ + infoResponseIsInStore() { + const { infoResponses } = this.props; + const currentInfoResponse = infoResponses[this.imageInformationUri()]; + return (currentInfoResponse !== undefined + && currentInfoResponse.isFetching === false + && currentInfoResponse.json !== undefined); + } + + /** + * Constructs an image information URI to request from a canvas + */ + imageInformationUri() { + const { window } = this.props; + return `${this.canvases[window.canvasIndex].getImages()[0].getResource().getServices()[0].id}/info.json`; + } + + /** + * Return an image information response from the store for the correct image + */ + tileInfoFetchedFromStore() { + const { infoResponses } = this.props; + return [infoResponses[this.imageInformationUri()]] + .filter(infoResponse => (infoResponse !== undefined + && infoResponse.isFetching === false + && infoResponse.error === undefined)) + .map(infoResponse => infoResponse.json); + } + + /** + * Renders things + */ + render() { + const { window } = this.props; + return ( + <Fragment> + <OpenSeadragonViewer + tileSources={this.tileInfoFetchedFromStore()} + window={window} + /> + <ViewerNavigation window={window} canvases={this.canvases} /> + </Fragment> + ); + } +} + +/** + * mapStateToProps - to hook up connect + * @memberof WindowViewer + * @private + */ +const mapStateToProps = state => ( + { + infoResponses: state.infoResponses, + } +); + +/** + * mapDispatchToProps - used to hook up connect to action creators + * @memberof WindowViewer + * @private + */ +const mapDispatchToProps = dispatch => ({ + fetchInfoResponse: infoId => dispatch(actions.fetchInfoResponse(infoId)), +}); + +WindowViewer.propTypes = { + infoResponses: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + fetchInfoResponse: PropTypes.func.isRequired, + manifest: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + window: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types +}; + +export default connect(mapStateToProps, mapDispatchToProps)(miradorWithPlugins(WindowViewer)); diff --git a/src/components/Workspace.js b/src/components/Workspace.js new file mode 100644 index 0000000000000000000000000000000000000000..f9b36c36e59018a8b55199770500083e7e1c0eb8 --- /dev/null +++ b/src/components/Workspace.js @@ -0,0 +1,40 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import PropTypes from 'prop-types'; +import Window from './Window'; +import ns from '../config/css-ns'; + +/** + * Represents a work area that contains any number of windows + * @memberof Workspace + * @private + */ +const Workspace = ({ windows }) => ( + <div className={ns('workspace')}> + { + windows.map(window => ( + <Window + key={window.id} + id={window.id} + /> + )) + } + </div> +); + +Workspace.propTypes = { + windows: PropTypes.instanceOf(Array).isRequired, +}; + +/** + * mapStateToProps - to hook up connect + * @memberof Workspace + * @private + */ +const mapStateToProps = state => ( + { + windows: state.windows, + } +); + +export default connect(mapStateToProps)(Workspace); diff --git a/src/config/css-ns.js b/src/config/css-ns.js new file mode 100644 index 0000000000000000000000000000000000000000..77ad4b4c914bd35951b7f64799d611f67694d6be --- /dev/null +++ b/src/config/css-ns.js @@ -0,0 +1,10 @@ +import { createCssNs } from 'css-ns'; + +/** + * export ns - sets up css namespacing for everything to be `mirador-` + */ +const ns = className => createCssNs({ + namespace: 'mirador', +})(className); + +export default ns; diff --git a/src/config/settings.js b/src/config/settings.js new file mode 100644 index 0000000000000000000000000000000000000000..5532a6a728ebfed6ed0f3a52af166cdb483e25e0 --- /dev/null +++ b/src/config/settings.js @@ -0,0 +1,3 @@ +export default { + foo: 'bar', +}; diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000000000000000000000000000000000000..406e2a89e6e94cb1a348350daa7a2b69bc41f4ab --- /dev/null +++ b/src/index.js @@ -0,0 +1,8 @@ +import init from './init'; + +const exports = { + viewer: init, + plugins: {}, +}; + +export default exports; diff --git a/src/init.js b/src/init.js new file mode 100644 index 0000000000000000000000000000000000000000..307b11a14a6953c72b223f66f0f3501f1a1b6c13 --- /dev/null +++ b/src/init.js @@ -0,0 +1,29 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import { Provider } from 'react-redux'; +import deepmerge from 'deepmerge'; +import App from './components/App'; +import { actions, store } from './store'; +import settings from './config/settings'; +import './styles/index.scss'; + +/** + * Default Mirador instantiation + */ +export default function (config) { + const viewer = { + actions, + store, + }; + const action = actions.setConfig(deepmerge(settings, config)); + store.dispatch(action); + + ReactDOM.render( + <Provider store={store}> + <App config={config} /> + </Provider>, + document.getElementById(config.id), + ); + + return viewer; +} diff --git a/src/lib/componentPlugins.js b/src/lib/componentPlugins.js new file mode 100644 index 0000000000000000000000000000000000000000..a97841f2a59387f62efa3d7a61dbf0e1256e9e4f --- /dev/null +++ b/src/lib/componentPlugins.js @@ -0,0 +1,14 @@ +/** + * componentPlugins - gets window plugins based on a component parent + */ +export default function componentPlugins(componentName, plugins = []) { + // TODO: Figure out how to handle when not running under window. Probably not + // a pressing priority, but relevant for tests + return plugins.map((pluginName) => { + if (window.Mirador.plugins[pluginName] + && window.Mirador.plugins[pluginName].parent === componentName) { + return window.Mirador.plugins[pluginName]; + } + return null; + }).filter(plugin => (plugin !== (undefined || null))); +} diff --git a/src/lib/miradorWithPlugins.js b/src/lib/miradorWithPlugins.js new file mode 100644 index 0000000000000000000000000000000000000000..06efc98cb8473c1104df4b9734971cf215b4d672 --- /dev/null +++ b/src/lib/miradorWithPlugins.js @@ -0,0 +1,60 @@ +import React, { Component, Fragment } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import componentPlugins from './componentPlugins'; +/** + * miradorWithPlugins - renders and returns a component with provided plugins + * + * @param {type} WrappedComponent + */ +export default function miradorWithPlugins(WrappedComponent) { + /** + */ + class ConnectedComponent extends Component { + /** + * constructor - + */ + constructor(props) { + super(props); + + this.getPluginParent = this.getPluginParent.bind(this); + } + + /** + * pluginParent - access the plugin's "parent" + */ + getPluginParent() { + return this.pluginParent; + } + + /** + * render - renders the wrapped component with the plugins. + */ + render() { + const { config } = this.props; + const { plugins } = config; + return ( + <Fragment> + <WrappedComponent {...this.props} ref={(parent) => { this.pluginParent = parent; }} /> + { /* TODO: Refactor .name here in some way so we dont need to rely on it */} + {componentPlugins(WrappedComponent.name, plugins) + .map(component => React.createElement( + connect(component.mapStateToProps, component.mapDispatchToProps)(component.component), + { key: component.name, ...this.props, pluginParent: this.getPluginParent }, + )) + } + </Fragment> + ); + } + } + + ConnectedComponent.propTypes = { + config: PropTypes.instanceOf(Object).isRequired, + }; + + /** + */ + const mapStateToProps = state => ({ config: state.config }); + + return connect(mapStateToProps, null)(ConnectedComponent); +} diff --git a/src/reducers/config.js b/src/reducers/config.js new file mode 100644 index 0000000000000000000000000000000000000000..92df252e757a53160f7c3fe1305aa35cbb286a82 --- /dev/null +++ b/src/reducers/config.js @@ -0,0 +1,18 @@ +import deepmerge from 'deepmerge'; +import ActionTypes from '../action-types'; + +/** + * configReducer - does a deep merge of the config + */ +const configReducer = (state = {}, action) => { + switch (action.type) { + case ActionTypes.UPDATE_CONFIG: + return deepmerge(state, action.config); + case ActionTypes.SET_CONFIG: + return action.config; + default: + return state; + } +}; + +export { configReducer as default }; diff --git a/src/reducers/index.js b/src/reducers/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a52f1c82bd3259b2a501689a603aad622bbe5c2d --- /dev/null +++ b/src/reducers/index.js @@ -0,0 +1,21 @@ +import { combineReducers } from 'redux'; +import workspaceReducer from './workspace'; +import windowsReducer from './windows'; +import manifestsReducer from './manifests'; +import configReducer from './config'; +import infoResponsesReducer from './infoResponses'; + +/** + * Action Creators for Mirador + * @namespace RootReducer + */ + +const rootReducer = combineReducers({ + workspace: workspaceReducer, + windows: windowsReducer, + manifests: manifestsReducer, + config: configReducer, + infoResponses: infoResponsesReducer, +}); + +export default rootReducer; diff --git a/src/reducers/infoResponses.js b/src/reducers/infoResponses.js new file mode 100644 index 0000000000000000000000000000000000000000..9954dcb9b4c7ad1480fe09062a0c1ef98cd0591f --- /dev/null +++ b/src/reducers/infoResponses.js @@ -0,0 +1,39 @@ +import ActionTypes from '../action-types'; + +/** + * infoResponsesReducer + */ +const infoResponsesReducer = (state = {}, action) => { + switch (action.type) { + case ActionTypes.REQUEST_INFO_RESPONSE: + return Object.assign({}, state, { + [action.infoId]: { + isFetching: true, + }, + }); + case ActionTypes.RECEIVE_INFO_RESPONSE: + return Object.assign({}, state, { + [action.infoId]: { + json: action.infoJson, + isFetching: false, + }, + }); + case ActionTypes.RECEIVE_INFO_RESPONSE_FAILURE: + return Object.assign({}, state, { + [action.infoId]: { + error: action.error, + isFetching: false, + }, + }); + case ActionTypes.REMOVE_INFO_RESPONSE: + return Object.keys(state).reduce((object, key) => { + if (key !== action.infoId) { + object[key] = state[key]; // eslint-disable-line no-param-reassign + } + return object; + }, {}); + default: return state; + } +}; + +export default infoResponsesReducer; diff --git a/src/reducers/manifests.js b/src/reducers/manifests.js new file mode 100644 index 0000000000000000000000000000000000000000..48041ac3a01a23b87e7666d4888e3158224fc6b7 --- /dev/null +++ b/src/reducers/manifests.js @@ -0,0 +1,40 @@ +import manifesto from 'manifesto.js'; +import ActionTypes from '../action-types'; + +/** + * manifestsReducer + */ +const manifestsReducer = (state = {}, action) => { + switch (action.type) { + case ActionTypes.REQUEST_MANIFEST: + return Object.assign({}, state, { + [action.manifestId]: { + isFetching: true, + }, + }); + case ActionTypes.RECEIVE_MANIFEST: + return Object.assign({}, state, { + [action.manifestId]: { + manifestation: manifesto.create(action.manifestJson), + isFetching: false, + }, + }); + case ActionTypes.RECEIVE_MANIFEST_FAILURE: + return Object.assign({}, state, { + [action.manifestId]: { + error: action.error, + isFetching: false, + }, + }); + case ActionTypes.REMOVE_MANIFEST: + return Object.keys(state).reduce((object, key) => { + if (key !== action.manifestId) { + object[key] = state[key]; // eslint-disable-line no-param-reassign + } + return object; + }, {}); + default: return state; + } +}; + +export default manifestsReducer; diff --git a/src/reducers/windows.js b/src/reducers/windows.js new file mode 100644 index 0000000000000000000000000000000000000000..508200fbdb3be9822833a37c10aa5d21d236e64a --- /dev/null +++ b/src/reducers/windows.js @@ -0,0 +1,31 @@ +import ActionTypes from '../action-types'; + +/** + * windowsReducer + */ +const windowsReducer = (state = [], action) => { + switch (action.type) { + case ActionTypes.ADD_WINDOW: + return state.concat(Object.assign({}, action.payload)); + case ActionTypes.REMOVE_WINDOW: + return state.filter(window => window.id !== action.windowId); + case ActionTypes.NEXT_CANVAS: + return state.map((window) => { + if (window.id === action.windowId) { + return Object.assign({}, window, { canvasIndex: window.canvasIndex + 1 }); + } + return window; + }); + case ActionTypes.PREVIOUS_CANVAS: + return state.map((window) => { + if (window.id === action.windowId) { + return Object.assign({}, window, { canvasIndex: window.canvasIndex - 1 }); + } + return window; + }); + default: + return state; + } +}; + +export default windowsReducer; diff --git a/src/reducers/workspace.js b/src/reducers/workspace.js new file mode 100644 index 0000000000000000000000000000000000000000..2219a7bc3fdbb7bc373c9ea0237ae3d7e25f4942 --- /dev/null +++ b/src/reducers/workspace.js @@ -0,0 +1,15 @@ +import ActionTypes from '../action-types'; + +/** + * workspaceReducer + */ +const workspaceReducer = (state = {}, action) => { + switch (action.type) { + case ActionTypes.FOCUS_WINDOW: + return Object.assign({}, state, { focusedWindowId: action.windowId }); + default: + return state; + } +}; + +export { workspaceReducer as default }; diff --git a/src/store.js b/src/store.js new file mode 100644 index 0000000000000000000000000000000000000000..bbb6c6e1cb30f7853ac971e599de3ba78bf1f321 --- /dev/null +++ b/src/store.js @@ -0,0 +1,20 @@ +// Topics for understanding +// redux modules for nested stores +// state normalisation +// (normalizer library) + +import thunkMiddleware from 'redux-thunk'; +import { createStore, applyMiddleware } from 'redux'; +import { composeWithDevTools } from 'redux-devtools-extension'; +import rootReducer from './reducers/index'; +import * as ActionCreators from './actions'; + +// Create a Redux store holding the state of your app. +// Its API is { subscribe, dispatch, getState }. +export const store = createStore( + rootReducer, + composeWithDevTools(applyMiddleware(thunkMiddleware)), +); + +export const actions = ActionCreators; +export default { actions, store }; diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000000000000000000000000000000000000..f37eb5dc2f4a4d823401ae7b2cf93931f407bbd7 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,64 @@ +body { + background: white; + height: 100%; +} + +.mirador { + &-control-panel { + position: absolute; + box-sizing: border-box; + padding: 15px; + margin:0px; + left:0; + top:0; + bottom:0; + width: 300px; + border-right: 2px solid black; + } + + &-workspace { + position: absolute; + box-sizing: border-box; + margin: 0; + padding-left: 300px; + top:0; + right:0; + bottom:0; + left:0; + overflow: scroll; + } + + &-window { + border: 1px solid black; + overflow: hidden; + position: relative; + } + + &-window-top-bar { + background: linear-gradient(to bottom, rgba(0, 0, 0, .65) 0%, rgba(0, 0, 0, 0) 100%); + color: white; + position: absolute; + z-index: 10; + + h3 { + margin: 0; + } + } + + &-osd-container { + background: gray; + bottom: 0; + height: 100%; + position: absolute; + top: 0; + width: 100%; + } + + &-osd-navigation { + bottom: 10px; + left: 0; + position: absolute; + right: 0; + text-align: center; + } +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000000000000000000000000000000000000..b643a0c157d3c7d4335bd4c45415fab4b7ba516d --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,94 @@ +const path = require('path'); +const TerserPlugin = require('terser-webpack-plugin'); +const paths = require('./config/paths'); + +const eslintLoaderConfig = { + test: /\.(js|mjs|jsx)$/, + enforce: 'pre', + use: [ + { + options: { + formatter: require.resolve('react-dev-utils/eslintFormatter'), + eslintPath: require.resolve('eslint'), + + }, + loader: require.resolve('eslint-loader'), + }, + ], + include: paths.appSrc, +}; + +const babelLoaderConfig = { + test: /\.(js|mjs|jsx)$/, + include: paths.appSrc, // CRL + loader: require.resolve('babel-loader'), + options: { + plugins: [ + [ + require.resolve('babel-plugin-named-asset-import'), + { + loaderMap: { + svg: { + ReactComponent: '@svgr/webpack?-prettier,-svgo![path]', + }, + }, + }, + ], + ], + cacheDirectory: true, + // Save disk space when time isn't as important + cacheCompression: true, + compact: true, + }, +}; + +module.exports = [ + { + entry: './src/store.js', + output: { + path: path.join(__dirname, 'dist'), + filename: 'm3core.umd.js', + libraryTarget: 'umd', + library: 'm3core', + }, + module: { + rules: [ + eslintLoaderConfig, + babelLoaderConfig, + ], + }, + }, + { + entry: './src/index.js', + output: { + path: path.join(__dirname, 'dist'), + filename: 'mirador.min.js', + libraryTarget: 'umd', + library: 'Mirador', + libraryExport: 'default', + }, + resolve: { extensions: ['.js'] }, + module: { + rules: [ + eslintLoaderConfig, + babelLoaderConfig, + { + test: /\.scss$/, + use: [ + 'style-loader', // creates style nodes from JS strings + 'css-loader', // translates CSS into CommonJS + 'sass-loader', // compiles Sass to CSS, using Node Sass by default + ], + }], + }, + optimization: { + minimizer: [ + new TerserPlugin({ + terserOptions: { + mangle: false, + }, + }), + ], + }, + }, +];