diff --git a/api/app/controllers/api/v1/journal_issues_controller.rb b/api/app/controllers/api/v1/journal_issues_controller.rb index d3ce2b305b..c8b9f9d31a 100644 --- a/api/app/controllers/api/v1/journal_issues_controller.rb +++ b/api/app/controllers/api/v1/journal_issues_controller.rb @@ -40,7 +40,7 @@ def includes [:journal, :journal_volume, :project, "project.creators", "project.contributors", "project.texts", "project.text_categories", "project.events", "project.resource_collections", "project.resources", "project.subjects", - "project.twitter_queries", "project.permitted_users", "project.content_blocks", + "project.permitted_users", "project.content_blocks", "project.action_callouts"] end diff --git a/api/app/controllers/api/v1/projects/relationships/events_controller.rb b/api/app/controllers/api/v1/projects/relationships/events_controller.rb index 70f290f36c..2239968263 100644 --- a/api/app/controllers/api/v1/projects/relationships/events_controller.rb +++ b/api/app/controllers/api/v1/projects/relationships/events_controller.rb @@ -9,8 +9,13 @@ class EventsController < AbstractProjectChildController resourceful! Event, authorize_options: { except: [:index] } do Event.filtered( with_pagination!(event_filter_params), - scope: @project.events.excluding_type([EventType[:comment_created], - EventType[:text_annotated]]) + scope: @project.events.excluding_type( + [ + EventType[:comment_created], + EventType[:text_annotated], + EventType[:tweet] + ] + ) ) end diff --git a/api/app/controllers/api/v1/projects/relationships/twitter_queries_controller.rb b/api/app/controllers/api/v1/projects/relationships/twitter_queries_controller.rb deleted file mode 100644 index dc7030b54d..0000000000 --- a/api/app/controllers/api/v1/projects/relationships/twitter_queries_controller.rb +++ /dev/null @@ -1,73 +0,0 @@ -module API - module V1 - module Projects - module Relationships - # Responds with twitter queries in a project - class TwitterQueriesController < AbstractProjectChildController - - resourceful! TwitterQuery, authorize_options: { - except: [:index, :create, :show, :update, :destroy] - } do - @project.nil? ? TwitterQuery : @project.twitter_queries - end - - def index - authorize_action_for TwitterQuery, for: @project - @twitter_queries = load_twitter_queries - location = api_v1_project_relationships_twitter_queries_url(@project.id) - render_multiple_resources( - @twitter_queries, - location: location - ) - end - - def create - @twitter_query = - ::Updaters::Default.new(twitter_query_params) - .update_without_save(@project.twitter_queries.new) - @twitter_query.creator = @current_user - authorize_action_for @twitter_query - @twitter_query.save - render_single_resource( - @twitter_query, - location: location - ) - end - - def show - @twitter_query = load_twitter_query - authorize_action_for @twitter_query - render_single_resource( - @twitter_query, - location: location - ) - end - - def update - @twitter_query = load_and_authorize_twitter_query - ::Updaters::Default.new(twitter_query_params).update(@twitter_query) - render_single_resource( - @twitter_query, - location: location - ) - end - - def destroy - @twitter_query = load_and_authorize_twitter_query - @twitter_query.destroy - end - - private - - def location - api_v1_project_relationships_twitter_queries_url( - @twitter_query, - project_id: @twitter_query.project_id - ) - end - - end - end - end - end -end diff --git a/api/app/controllers/api/v1/projects_controller.rb b/api/app/controllers/api/v1/projects_controller.rb index 762d11d6ae..781be5b62a 100644 --- a/api/app/controllers/api/v1/projects_controller.rb +++ b/api/app/controllers/api/v1/projects_controller.rb @@ -48,7 +48,7 @@ def destroy def includes [:creators, :contributors, :texts, :text_categories, :events, - :resource_collections, :resources, :subjects, :twitter_queries, + :resource_collections, :resources, :subjects, :permitted_users, :content_blocks, :action_callouts, :journal, :journal_volume, :journal_issue, :flattened_collaborators, :collaborators] end diff --git a/api/app/controllers/api/v1/twitter_queries/relationships/twitter_query_fetch_controller.rb b/api/app/controllers/api/v1/twitter_queries/relationships/twitter_query_fetch_controller.rb deleted file mode 100644 index ad70a6c3a4..0000000000 --- a/api/app/controllers/api/v1/twitter_queries/relationships/twitter_query_fetch_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -module API - module V1 - module TwitterQueries - module Relationships - class TwitterQueryFetchController < ApplicationController - - resourceful! TwitterQuery - - def create - @twitter_query = TwitterQuery.find(params[:twitter_query_id]) - @twitter_query.fetch_now - render_single_resource( - @twitter_query, - location: location - ) - end - - private - - def location - api_v1_project_relationships_twitter_queries_url( - @twitter_query, - project_id: @twitter_query.project_id - ) - end - end - end - end - end -end diff --git a/api/app/models/project.rb b/api/app/models/project.rb index dfffc33373..d2dd45c91b 100644 --- a/api/app/models/project.rb +++ b/api/app/models/project.rb @@ -301,7 +301,7 @@ def resources_for_project_detail_ids end def filtered_events - events.excluding_type(%w(comment_created text_annotated)) + events.excluding_type(%w(comment_created text_annotated tweet)) end def filtered_event_count diff --git a/api/app/serializers/v1/concerns/project_serializer.rb b/api/app/serializers/v1/concerns/project_serializer.rb index fe89e14f7d..69ddc9a59b 100644 --- a/api/app/serializers/v1/concerns/project_serializer.rb +++ b/api/app/serializers/v1/concerns/project_serializer.rb @@ -50,9 +50,6 @@ module ProjectSerializer typed_attribute :purchase_price_currency, Types::String.optional.meta(example: "USD") typed_attribute :purchase_price, Types::Float.optional.meta(read_only: true) typed_attribute :purchase_call_to_action, Types::String.optional - typed_attribute :twitter_id, Types::String.optional - typed_attribute :instagram_id, Types::String.optional - typed_attribute :facebook_id, Types::String.optional typed_attribute :description_formatted, Types::String.meta(read_only: true) typed_attribute :resource_kinds, Types::Array.of(Types::String).meta(read_only: true) typed_attribute :dark_mode, Types::Bool @@ -104,7 +101,6 @@ module ProjectSerializer id_method_name: :resources_for_project_detail_ids, object_method_name: :resources_for_project_detail typed_has_many :subjects - typed_has_many :twitter_queries typed_has_many :permitted_users, serializer: ::V1::UserSerializer typed_has_many :content_blocks, polymorphic: true typed_has_many :action_callouts @@ -136,7 +132,7 @@ module ProjectSerializer class_methods do def filtered_events(project) - project.events.excluding_type(%w(comment_created text_annotated)) + project.events.excluding_type(%w(comment_created text_annotated tweet)) end end end diff --git a/api/app/serializers/v1/journal_serializer.rb b/api/app/serializers/v1/journal_serializer.rb index 122cc7a058..d26cbd1de7 100644 --- a/api/app/serializers/v1/journal_serializer.rb +++ b/api/app/serializers/v1/journal_serializer.rb @@ -45,9 +45,6 @@ class JournalSerializer < ManifoldSerializer when_full do metadata(metadata: true, properties: true, formatted: true) typed_attribute :hashtag, Types::String.optional - typed_attribute :twitter_id, Types::String.optional - typed_attribute :instagram_id, Types::String.optional - typed_attribute :facebook_id, Types::String.optional typed_attribute :image_credits, Types::String.optional typed_attribute :image_credits_formatted, Types::String.meta(read_only: true) typed_attribute :pending_slug, Types::String diff --git a/api/app/serializers/v1/setting_serializer.rb b/api/app/serializers/v1/setting_serializer.rb index 78068df118..1b808447cc 100644 --- a/api/app/serializers/v1/setting_serializer.rb +++ b/api/app/serializers/v1/setting_serializer.rb @@ -36,12 +36,10 @@ class SettingSerializer < ManifoldSerializer default_project_sort: Types::String.optional, default_publisher: Types::String.optional, default_publisher_place: Types::String.optional, - facebook: Types::String.optional, home_redirect_url: Types::String.optional, library_redirect_url: Types::String.optional, press_site: Types::String.optional, - terms_url: Types::Serializer::URL.optional, - twitter: Types::String.optional + terms_url: Types::Serializer::URL.optional ) typed_section_attribute :ingestion, Types::Hash.schema( @@ -74,14 +72,11 @@ class SettingSerializer < ManifoldSerializer typed_attribute :string_cookies_banner_copy_formatted, Types::String.meta(read_only: true) typed_section_attribute :integrations, Types::Hash.schema( - facebook_app_id: Types::String.optional, ga_four_tracking_id: Types::String.optional, google_client_email: Types::String.optional, google_client_id: Types::String.optional, google_private_key_id: Types::String.optional, - google_project_id: Types::String.optional, - twitter_access_token: Types::String.optional, - twitter_app_id: Types::String.optional + google_project_id: Types::String.optional ) typed_section_attribute :email, Types::Hash.schema( @@ -133,18 +128,13 @@ class SettingSerializer < ManifoldSerializer end typed_attribute :oauth, Types::Hash.schema( - facebook: Types::Serializer::Oauth, - googleOauth2: Types::Serializer::Oauth, - twitter: Types::Serializer::Oauth + googleOauth2: Types::Serializer::Oauth ).meta(read_only: true) do |_object, _params| ManifoldEnv.oauth.as_json end typed_section_attribute :secrets, Types::Hash.schema( akismet_api_key: Types::String, - facebook_app_secret: Types::String, - twitter_app_secret: Types::String, - twitter_access_token_secret: Types::String, google_private_key: Types::String, smtp_settings_password: Types::String ) diff --git a/api/config/routes.rb b/api/config/routes.rb index c91ca94aac..a77388d893 100644 --- a/api/config/routes.rb +++ b/api/config/routes.rb @@ -216,7 +216,6 @@ resources :resources, only: [:index, :create] resources :resource_collections, only: [:index, :create] resources :events, only: [:index] - resources :twitter_queries, only: [:index, :create] resources :resource_imports, only: [:create, :update, :show] resources :collaborators, only: [:index, :show] do collection do @@ -233,14 +232,6 @@ end end - resources :twitter_queries, only: [:show, :update, :destroy], controller: "projects/relationships/twitter_queries" do - scope module: :twitter_queries do - namespace :relationships do - resource :fetch, controller: "twitter_query_fetch", only: [:create] - end - end - end - resources :tokens, only: [:create] resources :users do diff --git a/api/spec/requests/api/v1/projects_spec.rb b/api/spec/requests/api/v1/projects_spec.rb index ad1b99ac6a..8c34d0ac5c 100644 --- a/api/spec/requests/api/v1/projects_spec.rb +++ b/api/spec/requests/api/v1/projects_spec.rb @@ -10,7 +10,6 @@ :resource_collections, :resources, :subjects, - :twitter_queries, :permitted_users, :content_blocks, :action_callouts diff --git a/api/spec/requests/api/v1/twitter_queries_spec.rb b/api/spec/requests/api/v1/twitter_queries_spec.rb deleted file mode 100644 index 793f681a8b..0000000000 --- a/api/spec/requests/api/v1/twitter_queries_spec.rb +++ /dev/null @@ -1,52 +0,0 @@ -require "swagger_helper" - -RSpec.describe "Twitter Queries", type: :request do - path "/twitter_queries/{id}" do - include_examples "an API destroy request", model: TwitterQuery, authorized_user: :admin - include_examples "an API show request", model: TwitterQuery, authorized_user: :admin - include_examples "an API update request", model: TwitterQuery, authorized_user: :admin - end - - context "when belonging to a project" do - let!(:resource) { FactoryBot.create(:twitter_query) } - let!(:project_id) { resource.project_id } - - path "/projects/{project_id}/relationships/twitter_queries" do - include_examples "an API create request", - model: TwitterQuery, - parent: "project", - authorized_user: :admin, - url_parameters: [:project_id] - - include_examples "an API index request", - model: TwitterQuery, - parent: "project", - authorized_user: :admin, - url_parameters: [:project_id] - end - end - - context "when belonging to a twitter_query" do - before(:all) do - headers = { - "Content-Type" => "application/json;charset=utf-8" - } - body = '{"statuses":[]}' - stub_request(:get, /api.twitter.com/).to_return(status: 200, body: body, headers: headers) - end - - let!(:resource) { FactoryBot.create(:twitter_query) } - let!(:twitter_query_id) { resource.id } - path "/twitter_queries/{twitter_query_id}/relationships/fetch" do - include_examples "an API create request", - model: TwitterQuery, - parent: "twitter query", - description: "In order to run this query successfully, "\ - "twitter credentials must be set in the settings for this "\ - "manifold instance. Please look at the /settings routes "\ - "for more information on how to set twitter credentials.", - authorized_user: :admin, - url_parameters: [:twitter_query_id] - end - end -end diff --git a/api/spec/requests/projects/relationships/twitter_queries_spec.rb b/api/spec/requests/projects/relationships/twitter_queries_spec.rb deleted file mode 100644 index 7ba7c992b9..0000000000 --- a/api/spec/requests/projects/relationships/twitter_queries_spec.rb +++ /dev/null @@ -1,145 +0,0 @@ -# frozen_string_literal: true - -RSpec.describe "Project Twitter Queries API", type: :request do - let_it_be(:project, refind: true) { FactoryBot.create(:project) } - - describe "sends a list of a project's twitter queries" do - let(:path) { api_v1_project_relationships_twitter_queries_path(project) } - - context "when the user is an admin" do - let(:headers) { admin_headers } - describe "the response" do - it "has a 200 status code" do - get path, headers: headers - expect(response).to have_http_status(200) - end - end - end - - context "when the user is a reader" do - let(:headers) { reader_headers } - describe "the response" do - it "has a 403 FORBIDDEN status code" do - get path, headers: headers - expect(response).to have_http_status(403) - end - end - end - end - - describe "sends a single project twitter query" do - before(:each) do - @twitter_query = FactoryBot.create(:twitter_query, project: project) - end - let(:path) { api_v1_twitter_query_path(@twitter_query) } - - context "when the user is an admin" do - let(:headers) { admin_headers } - describe "the response" do - it "has a 200 status code" do - get path, headers: headers - expect(response).to have_http_status(200) - end - end - end - - context "when the user is a reader" do - let(:headers) { reader_headers } - describe "the response" do - it "has a 403 FORBIDDEN status code" do - get path, headers: headers - expect(response).to have_http_status(403) - end - end - end - end - - describe "creates a new twitter query for a project" do - let(:path) { api_v1_project_relationships_twitter_queries_path(project) } - let(:resource) { - { attributes: { query: "puppies", active: true }, - relationships: { project: { data: { type: "projects", id: project.id } } } } - } - - context "when the user is an admin" do - let(:headers) { admin_headers } - describe "the response" do - it "has a 201 CREATED status code" do - post path, headers: headers, params: build_json_payload(resource) - expect(response).to have_http_status(201) - end - end - end - - context "when the user is a reader" do - let(:headers) { reader_headers } - describe "the response" do - it "has a 403 FORBIDDEN status code" do - post path, headers: headers, params: build_json_payload(resource) - expect(response).to have_http_status(403) - end - end - end - end - - describe "updates a twitter query" do - before(:each) do - @twitter_query = FactoryBot.create(:twitter_query, project: project) - end - let(:path) { api_v1_twitter_query_path(@twitter_query) } - let(:valid_params) { build_json_payload(attributes: { query: "from:rambostoolz" }) } - - context "when the user is an admin" do - let(:headers) { admin_headers } - - it "has a 200 SUCCESS status code" do - put path, headers: headers, params: valid_params - expect(response).to have_http_status(200) - end - - it "updates a twitter query successfully" do - put path, headers: headers, params: valid_params - @twitter_query.reload - expect(@twitter_query.query).to eq "from:rambostoolz" - end - end - - context "when the user is a reader" do - let(:headers) { reader_headers } - it "has a 403 FORBIDDEN status code" do - put path, headers: headers, params: valid_params - expect(response).to have_http_status(403) - end - end - end - - describe "destroys a twitter query" do - before(:each) do - @twitter_query = FactoryBot.create(:twitter_query, project: project) - end - let(:path) { api_v1_twitter_query_path(@twitter_query) } - - context "when the user is an admin" do - let(:headers) { admin_headers } - - it "has a 204 NO CONTENT status code" do - delete path, headers: headers - expect(response).to have_http_status(204) - end - - it "destroys a twitter query successfully" do - expect{ - delete path, headers: headers - }.to change{TwitterQuery.count}.by(-1) - end - end - - context "when the user is a reader" do - let(:headers) { reader_headers } - it "has a 403 FORBIDDEN status code" do - delete path, headers: headers - expect(response).to have_http_status(403) - end - end - end -end diff --git a/client/src/api/__mocks__/client.js b/client/src/api/__mocks__/client.js index 74472f72ee..19e15ea57a 100644 --- a/client/src/api/__mocks__/client.js +++ b/client/src/api/__mocks__/client.js @@ -5,7 +5,6 @@ export default class ApiClient { call = (endpoint, methodIgnored, optionsIgnored) => { const collectionEndpoints = [ /\/api\/v1\/projects\/\w*\/relationships\/resources/, - /\/api\/v1\/projects\/\w*\/relationships\/twitter_queries/, /\/api\/v1\/annotations\/\w*\/relationships\/comments/, /\/api\/v1\/resources\/\w*\/relationships\/comments/, /\/api\/v1\/me\/relationships\/reading_groups/ diff --git a/client/src/api/index.js b/client/src/api/index.js index bee0c3d28e..38ae109875 100644 --- a/client/src/api/index.js +++ b/client/src/api/index.js @@ -29,7 +29,6 @@ export ingestionsAPI from "./resources/ingestions"; export stylesheetsAPI from "./resources/stylesheets"; export searchResultsAPI from "./resources/searchResults"; export testMailsAPI from "./resources/testMails"; -export twitterQueriesAPI from "./resources/twitterQueries"; export permissionsAPI from "./resources/permissions"; export requests from "./requests"; export ApiClient from "./client"; diff --git a/client/src/api/notifications.js b/client/src/api/notifications.js index ad0ef50243..576015c911 100644 --- a/client/src/api/notifications.js +++ b/client/src/api/notifications.js @@ -189,45 +189,6 @@ export default { expiration: defaultExpiration }; }, - [r.beTwitterQueryUpdate]: payloadIgnored => { - return { - level: 0, - heading: "Success!", - body: `This Twitter query has been updated.`, - expiration: defaultExpiration - }; - }, - [r.beTwitterQueryCreate]: payload => { - let query = null; - if (payload && payload.data && payload.data.attributes) { - query = payload.data.attributes.query; - } - const msg = query - ? `This project will now fetch tweets for "${query}".` - : "The Twitter query has been created."; - return { - level: 0, - heading: "Success!", - body: msg, - expiration: defaultExpiration - }; - }, - [r.beTwitterQueryDestroy]: payloadIgnored => { - return { - level: 0, - heading: "Success!", - body: "The twitter query has been deleted.", - expiration: defaultExpiration - }; - }, - [r.beTwitterQueryFetch]: payloadIgnored => { - return { - level: 0, - heading: "Success!", - body: `Tweets have been fetched.`, - expiration: defaultExpiration - }; - }, [r.bePermissionCreate]: payloadIgnored => { return { level: 0, diff --git a/client/src/api/requests.js b/client/src/api/requests.js index 4e39acf406..df8811a08e 100644 --- a/client/src/api/requests.js +++ b/client/src/api/requests.js @@ -79,12 +79,6 @@ export default { beSubject: "backend-subject", beSubjectDestroy: "backend-subject-destroy", beSubjectUpdate: "backend-edit-subject", - beTwitterQueries: "backend-twitter-queries", - beTwitterQuery: "backend-twitter-query", - beTwitterQueryDestroy: "backend-twitter-query-destroy", - beTwitterQueryUpdate: "backend-twitter-query-update", - beTwitterQueryCreate: "backend-twitter-query-create", - beTwitterQueryFetch: "backend-twitter-query-fetch", bePermissions: "backend-permissions", bePermission: "backend-permission", bePermissionCreate: "backend-permission-create", diff --git a/client/src/api/resources/projects.js b/client/src/api/resources/projects.js index d8cd37465b..5ad941d9a2 100644 --- a/client/src/api/resources/projects.js +++ b/client/src/api/resources/projects.js @@ -95,16 +95,6 @@ export default { }; }, - twitterQueries(id, page = {}) { - return { - endpoint: `/api/v1/projects/${id}/relationships/twitter_queries`, - method: "GET", - options: { - params: { page } - } - }; - }, - versions(id, filter = {}, page = {}) { return { endpoint: `/api/v1/projects/${id}/relationships/versions`, diff --git a/client/src/api/resources/twitterQueries.js b/client/src/api/resources/twitterQueries.js deleted file mode 100644 index 0f5752a69b..0000000000 --- a/client/src/api/resources/twitterQueries.js +++ /dev/null @@ -1,45 +0,0 @@ -export default { - create(pId, twitterQuery) { - return { - endpoint: `/api/v1/projects/${pId}/relationships/twitter_queries`, - method: "POST", - options: { - body: JSON.stringify({ type: "twitter_queries", data: twitterQuery }) - } - }; - }, - - show(id) { - return { - endpoint: `/api/v1/twitter_queries/${id}`, - method: "GET", - options: {} - }; - }, - - destroy(id) { - return { - endpoint: `/api/v1/twitter_queries/${id}`, - method: "DELETE", - options: {} - }; - }, - - update(id, twitterQuery) { - return { - endpoint: `/api/v1/twitter_queries/${id}`, - method: "PUT", - options: { - body: JSON.stringify({ type: "twitter_queries", data: twitterQuery }) - } - }; - }, - - fetch(id) { - return { - endpoint: `/api/v1/twitter_queries/${id}/relationships/fetch`, - method: "POST", - options: {} - }; - } -}; diff --git a/client/src/backend/components/category/List/__tests__/Categories-test.js b/client/src/backend/components/category/List/__tests__/Categories-test.js deleted file mode 100644 index 816c96c491..0000000000 --- a/client/src/backend/components/category/List/__tests__/Categories-test.js +++ /dev/null @@ -1,20 +0,0 @@ -import Categories from "../Categories"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List/Categories", () => { - def("project", fixtures.project); - - def("root", () => ( - {}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/List/__tests__/Category-test.js b/client/src/backend/components/category/List/__tests__/Category-test.js deleted file mode 100644 index fafb0a1729..0000000000 --- a/client/src/backend/components/category/List/__tests__/Category-test.js +++ /dev/null @@ -1,21 +0,0 @@ -import Category from "../Category"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List/Category", () => { - def("project", fixtures.project); - - def("root", () => ( - {}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/List/__tests__/Texts-test.js b/client/src/backend/components/category/List/__tests__/Texts-test.js deleted file mode 100644 index f19de56810..0000000000 --- a/client/src/backend/components/category/List/__tests__/Texts-test.js +++ /dev/null @@ -1,18 +0,0 @@ -import Texts from "../Texts"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List/Texts", () => { - def("project", fixtures.project); - - def("root", () => ( - {}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/List/__tests__/TextsInner-test.js b/client/src/backend/components/category/List/__tests__/TextsInner-test.js deleted file mode 100644 index 030afd3ad9..0000000000 --- a/client/src/backend/components/category/List/__tests__/TextsInner-test.js +++ /dev/null @@ -1,18 +0,0 @@ -import TextsInner from "../TextsInner"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List/TextsInner", () => { - def("project", fixtures.project); - - def("root", () => ( - {}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/List/__tests__/Uncategorized-test.js b/client/src/backend/components/category/List/__tests__/Uncategorized-test.js deleted file mode 100644 index 8e07491273..0000000000 --- a/client/src/backend/components/category/List/__tests__/Uncategorized-test.js +++ /dev/null @@ -1,19 +0,0 @@ -import Uncategorized from "../Uncategorized"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List/Uncategorized", () => { - def("project", fixtures.project); - - def("root", () => ( - {}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/List/__tests__/__fixtures__/index.js b/client/src/backend/components/category/List/__tests__/__fixtures__/index.js deleted file mode 100644 index 6d8383af4a..0000000000 --- a/client/src/backend/components/category/List/__tests__/__fixtures__/index.js +++ /dev/null @@ -1,29 +0,0 @@ -export const project = () => { - const project = factory("project", { - relationships: { - categories: [ - factory("category", { id: "1" }), - factory("category", { id: "2" }) - ] - } - }); - project.relationships.texts = [ - factory("text", { - id: "3", - relationships: { - project: project, - category: project.relationships.categories[0] - } - }), - factory("text", { - id: "4", - relationships: { - project: project, - category: project.relationships.categories[0] - } - }) - ]; - return project; -}; - -export default { project }; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/Categories-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/Categories-test.js.snap deleted file mode 100644 index 5447e8cac4..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/Categories-test.js.snap +++ /dev/null @@ -1,3185 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List/Categories matches the snapshot 1`] = ` -Array [ - Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - texts={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - [Circular], - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - [Circular], - ], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ] - } - />, - Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - texts={Array []} - />, -] -`; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/Category-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/Category-test.js.snap deleted file mode 100644 index c63e313b92..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/Category-test.js.snap +++ /dev/null @@ -1,2030 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List/Category matches the snapshot 1`] = ` -
<1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
<1>", - }, - }, - }, - }, - }, - } - } - index={1} - onTextKeyboardMove={[Function]} - project={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - t={[Function]} - tReady={true} - texts={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ] - } -/> -`; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/Texts-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/Texts-test.js.snap deleted file mode 100644 index f6fa990f98..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/Texts-test.js.snap +++ /dev/null @@ -1,17 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List/Texts matches the snapshot 1`] = ` - - - -`; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/TextsInner-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/TextsInner-test.js.snap deleted file mode 100644 index 57260f0c1f..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/TextsInner-test.js.snap +++ /dev/null @@ -1,1232 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List/TextsInner matches the snapshot 1`] = ` -
<1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
<1>", - }, - }, - }, - }, - }, - } - } - onTextKeyboardMove={[Function]} - t={[Function]} - tReady={true} - texts={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ] - } -/> -`; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/Uncategorized-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/Uncategorized-test.js.snap deleted file mode 100644 index c7972fa201..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/Uncategorized-test.js.snap +++ /dev/null @@ -1,2018 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List/Uncategorized matches the snapshot 1`] = ` -
<1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
<1>", - }, - }, - }, - }, - }, - } - } - onTextKeyboardMove={[Function]} - project={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - t={[Function]} - tReady={true} - texts={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ] - } -/> -`; diff --git a/client/src/backend/components/category/List/__tests__/__snapshots__/index-test.js.snap b/client/src/backend/components/category/List/__tests__/__snapshots__/index-test.js.snap deleted file mode 100644 index 3ae1bb22b5..0000000000 --- a/client/src/backend/components/category/List/__tests__/__snapshots__/index-test.js.snap +++ /dev/null @@ -1,2039 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/List matches the snapshot 1`] = ` -
<1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
<1>", - }, - }, - }, - }, - }, - } - } - project={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": [Circular], - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - t={[Function]} - tReady={true} - texts={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-3", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "3", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-4", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "4", - "relationships": Object { - "category": Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "categories": Array [ - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "1", - "relationships": Object {}, - "type": "categories", - }, - Object { - "attributes": Object { - "position": 1, - "title": "Hip Hop Classics", - }, - "id": "2", - "relationships": Object {}, - "type": "categories", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": [Circular], - }, - "type": "projects", - }, - "stylesheets": Array [ - Object { - "attributes": Object { - "name": "Slarmbo", - "position": 1, - "rawStyles": ".some-class { font-weight: bold }", - "styles": ".manifold-text-section .some-class { font-weight: bold }", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "text": null, - }, - "type": "stylesheets", - }, - ], - }, - "type": "texts", - }, - ] - } -/> -`; diff --git a/client/src/backend/components/category/List/__tests__/index-test.js b/client/src/backend/components/category/List/__tests__/index-test.js deleted file mode 100644 index 536ea636dd..0000000000 --- a/client/src/backend/components/category/List/__tests__/index-test.js +++ /dev/null @@ -1,23 +0,0 @@ -import CategoryList from "../index"; -import fixtures from "./__fixtures__"; - -describe("backend/components/category/List", () => { - def("project", fixtures.project); - - def("root", () => ( - - )); - - it("renders without exception", () => { - render($withApp($root)); - }); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/__stories__/Form.stories.js b/client/src/backend/components/category/__stories__/Form.stories.js deleted file mode 100644 index 5cd343a846..0000000000 --- a/client/src/backend/components/category/__stories__/Form.stories.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from "react"; -import { storiesOf, fixtures } from "helpers/storybook/exports"; -import Form from "../Form"; - -const project = fixtures.factory("project"); -const category = fixtures.factory("category", { relationships: { project } }); - -storiesOf("Backend/Category", module).add("Form", () => { - return
; -}); diff --git a/client/src/backend/components/category/__stories__/List.stories.js b/client/src/backend/components/category/__stories__/List.stories.js deleted file mode 100644 index 4d62d0e186..0000000000 --- a/client/src/backend/components/category/__stories__/List.stories.js +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import { storiesOf, fixtures } from "helpers/storybook/exports"; -import List from "../List"; - -const project = fixtures.factory("project"); -const categories = fixtures.collectionFactory("project"); -const texts = [ - fixtures.factory("text", { relationships: { category: categories[0] } }), - fixtures.factory("text", { relationships: { category: categories[1] } }), - fixtures.factory("text", { relationships: { category: categories[2] } }) -]; - -storiesOf("Backend/Category", module).add("List", () => { - return ( - - ); -}); diff --git a/client/src/backend/components/category/__tests__/Form-test.js b/client/src/backend/components/category/__tests__/Form-test.js deleted file mode 100644 index 54555d1128..0000000000 --- a/client/src/backend/components/category/__tests__/Form-test.js +++ /dev/null @@ -1,9 +0,0 @@ -import Form from "../Form"; - -describe("backend/components/category/Form", () => { - def("root", () => ); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/components/category/__tests__/__snapshots__/Form-test.js.snap b/client/src/backend/components/category/__tests__/__snapshots__/Form-test.js.snap deleted file mode 100644 index 40956cb3dd..0000000000 --- a/client/src/backend/components/category/__tests__/__snapshots__/Form-test.js.snap +++ /dev/null @@ -1,107 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/components/category/Form matches the snapshot 1`] = ` -
<1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
<1>", - }, - }, - }, - }, - }, - } - } - projectId="1" - t={[Function]} - tReady={true} -/> -`; diff --git a/client/src/backend/components/hero/Builder/forms/Social.js b/client/src/backend/components/hero/Builder/forms/Social.js deleted file mode 100644 index 9fca23862a..0000000000 --- a/client/src/backend/components/hero/Builder/forms/Social.js +++ /dev/null @@ -1,107 +0,0 @@ -import React, { PureComponent } from "react"; -import PropTypes from "prop-types"; -import Form from "global/components/form"; -import FormContainer from "global/containers/form"; -import Authorize from "hoc/Authorize"; -import lh from "helpers/linkHandler"; -import Layout from "backend/components/layout"; -import { withTranslation } from "react-i18next"; - -class Social extends PureComponent { - static displayName = "Hero.Builder.Forms.Social"; - - static propTypes = { - model: PropTypes.object.isRequired, - modelLabel: PropTypes.string.isRequired, - api: PropTypes.object.isRequired, - closeDrawer: PropTypes.func, - failureRedirectRoute: PropTypes.string.isRequired, - headerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - t: PropTypes.func, - setDirty: PropTypes.func - }; - - get model() { - return this.props.model; - } - - closeDrawer = () => { - if (!this.props.closeDrawer) return; - this.props.closeDrawer(); - }; - - onDirty = session => { - const dirtyAttrs = Object.keys(session.attributes).length; - const dirtyRels = Object.keys(session.relationships).length; - this.props.setDirty(dirtyAttrs || dirtyRels); - }; - - render() { - const { failureRedirectRoute, headerId, api, modelLabel, t } = this.props; - - return ( - -
- - - - - - - - -
-
- ); - } -} - -export default withTranslation()(Social); diff --git a/client/src/backend/components/hero/Builder/forms/index.js b/client/src/backend/components/hero/Builder/forms/index.js index bebcd42991..4098b54e52 100644 --- a/client/src/backend/components/hero/Builder/forms/index.js +++ b/client/src/backend/components/hero/Builder/forms/index.js @@ -1,9 +1,7 @@ import ProjectDescription from "./ProjectDescription"; import JournalDescription from "./JournalDescription"; -import Social from "./Social"; export default { JournalDescription, - ProjectDescription, - Social + ProjectDescription }; diff --git a/client/src/backend/components/hero/Builder/index.js b/client/src/backend/components/hero/Builder/index.js index 357cdf0151..ccbe721e81 100644 --- a/client/src/backend/components/hero/Builder/index.js +++ b/client/src/backend/components/hero/Builder/index.js @@ -20,8 +20,7 @@ class Builder extends PureComponent { PropTypes.oneOf([ "projectDescription", "journalDescription", - "actionCallouts", - "social" + "actionCallouts" ]) ), model: PropTypes.object.isRequired, @@ -103,10 +102,6 @@ class Builder extends PureComponent { this.setState({ drawer: Forms.JournalDescription }); }; - openSocialDrawer = () => { - this.setState({ drawer: Forms.Social }); - }; - toggleActionCallouts = () => { this.setState({ actionCalloutsOpen: !this.state.actionCalloutsOpen }); }; @@ -180,15 +175,6 @@ class Builder extends PureComponent { )} )} - {include.includes("social") && ( - - )} - ); - } -} - -export default withTranslation()(TwitterQueryRow); diff --git a/client/src/backend/components/list/EntitiesList/index.js b/client/src/backend/components/list/EntitiesList/index.js index e7daa7eccc..da1f2679bc 100644 --- a/client/src/backend/components/list/EntitiesList/index.js +++ b/client/src/backend/components/list/EntitiesList/index.js @@ -18,7 +18,6 @@ import CollectionProjectRow from "./Entity/CollectionProjectRow"; import ResourceRow from "./Entity/ResourceRow"; import ResourceCollectionRow from "./Entity/ResourceCollectionRow"; import SubjectRow from "./Entity/SubjectRow"; -import TwitterQueryRow from "./Entity/TwitterQueryRow"; import UserRow from "./Entity/UserRow"; import TagRow from "./Entity/TagRow"; import StringRow from "./Entity/StringRow"; @@ -57,7 +56,6 @@ export { ResourceRow, ResourceCollectionRow, SubjectRow, - TwitterQueryRow, UserRow, TagRow, StringRow, diff --git a/client/src/backend/components/list/__stories__/Entities.stories.js b/client/src/backend/components/list/__stories__/Entities.stories.js deleted file mode 100644 index 95ec67deb4..0000000000 --- a/client/src/backend/components/list/__stories__/Entities.stories.js +++ /dev/null @@ -1,446 +0,0 @@ -import React from "react"; -import { storiesOf, fixtures } from "helpers/storybook/exports"; -import EntityRow from "backend/components/list/EntitiesList/Entity/Row"; -import EntitiesList, { - Button, - Search, - EventRow, - FeatureRow, - LogRow, - MakerRow, - PageRow, - PermissionRow, - ProjectRow, - ResourceRow, - ResourceCollectionRow, - SubjectRow, - TwitterQueryRow, - UserRow -} from "backend/components/list/EntitiesList"; -import { text } from "@storybook/addon-knobs"; - -const users = fixtures.collectionFactory("user", 8); -const makers = fixtures.collectionFactory("maker", 8); -const projects = fixtures.collectionFactory("project", 6); -const features = fixtures.collectionFactory("feature", 6); -const pages = fixtures.collectionFactory("page", 6); -const events = fixtures.collectionFactory("event", 6); -const resourceCollections = fixtures.collectionFactory("resourceCollection", 6); -const resources = fixtures.collectionFactory("resource", 6); -const twitterQueries = fixtures.collectionFactory("twitterQuery", 6); -const subjects = fixtures.collectionFactory("subject", 6); -const permissions = fixtures.collectionFactory( - "permission", - 6, - (type, index) => ({ - id: `${type}-${index}`, - relationships: { - user: fixtures.factory("user"), - resource: fixtures.factory("project") - } - }) -); -const versions = fixtures.collectionFactory("version", 6); -const pagination = fixtures.pagination(); - -const fourFilters = [ - { - label: "Published State", - key: "draft", - options: [ - { - label: "Draft Projects", - value: true - }, - { - label: "Published Projects", - value: false - } - ] - }, - { - label: "Category", - key: "category", - options: [ - { - label: "Movies", - value: "movies" - }, - { - label: "Books", - value: "books" - } - ] - }, - { - label: "Age", - key: "age", - options: [ - { - label: "> 6 months", - value: "more" - }, - { - label: "< 6 months", - value: "less" - } - ] - }, - { - label: "Glorp", - key: "glorp", - options: [ - { - label: "Bananas", - value: "bananas" - }, - { - label: "Peaches", - value: "peaches" - } - ] - } -]; -const threeFilters = fourFilters.slice(0); -threeFilters.pop(); -const twoFilters = threeFilters.slice(0); -twoFilters.pop(); -const oneFilter = twoFilters.slice(0); -oneFilter.pop(); - -const sortOptions = [ - { - label: "Title", - value: "sort_title" - } -]; - -const fakeHandler = () => {}; -const callbacks = { - onPageClick: fakeHandler, - onSearchChange: fakeHandler -}; - -storiesOf("Backend/List/Entities", module) - .add("Users", () => { - return ( - ]} - search={ - - } - /> - ); - }) - - .add("TwitterQueries", () => { - return ( - ]} - entityComponent={TwitterQueryRow} - search={ - - } - /> - ); - }) - - .add("Subjects", () => { - return ( - - } - buttons={[
"`; diff --git a/client/src/backend/containers/permission/__tests__/__snapshots__/Form-test.js.snap b/client/src/backend/containers/permission/__tests__/__snapshots__/Form-test.js.snap deleted file mode 100644 index b2fb2f1d10..0000000000 --- a/client/src/backend/containers/permission/__tests__/__snapshots__/Form-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/permission/Form matches the snapshot when rendered 1`] = `""`; diff --git a/client/src/backend/containers/permission/__tests__/__snapshots__/List-test.js.snap b/client/src/backend/containers/permission/__tests__/__snapshots__/List-test.js.snap deleted file mode 100644 index d157919799..0000000000 --- a/client/src/backend/containers/permission/__tests__/__snapshots__/List-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/permission/List matches the snapshot when rendered 1`] = `"

projects.permissions.header

"`; diff --git a/client/src/backend/containers/permission/__tests__/__snapshots__/New-test.js.snap b/client/src/backend/containers/permission/__tests__/__snapshots__/New-test.js.snap deleted file mode 100644 index 211383251d..0000000000 --- a/client/src/backend/containers/permission/__tests__/__snapshots__/New-test.js.snap +++ /dev/null @@ -1,537 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/permission/New matches the snapshot 1`] = ` -
- - Rowan, The Dog

", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> -
-`; diff --git a/client/src/backend/containers/project-collection/__tests__/Detail-test.js b/client/src/backend/containers/project-collection/__tests__/Detail-test.js deleted file mode 100644 index bca5af0b63..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/Detail-test.js +++ /dev/null @@ -1,23 +0,0 @@ -import { ProjectCollectionDetail } from "../Detail"; - -describe("backend/containers/project-collection/Detail", () => { - def("projects", () => collectionFactory("projects")); - def("projectCollection", () => factory("projectCollection")); - def("collectionProjects", () => collectionFactory("collectionProject")); - def("route", () => fixtures.route()); - def("match", () => ({ params: {} })); - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project-collection/__tests__/ManageProjects-test.js b/client/src/backend/containers/project-collection/__tests__/ManageProjects-test.js deleted file mode 100644 index 760876afa6..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/ManageProjects-test.js +++ /dev/null @@ -1,23 +0,0 @@ -import ProjectCollectionManageProjects from "../ManageProjects"; - -describe("backend/containers/project-collection/ManageProjects", () => { - def("project", () => factory("project")); - def("projectCollection", () => factory("projectCollection")); - def("collectionProjects", () => collectionFactory("collectionProject")); - def("projects", () => collectionFactory("project")); - def("pagination", () => fixtures.pagination()); - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(mount($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project-collection/__tests__/New-test.js b/client/src/backend/containers/project-collection/__tests__/New-test.js deleted file mode 100644 index 7b20a30fef..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/New-test.js +++ /dev/null @@ -1,33 +0,0 @@ -import ProjectCollectionNew from "../New"; - -describe("backend/containers/project-collection/New", () => { - beforeEach(() => { - testHelpers.startSession($dispatch, $user); - }); - def("user", () => - factory("user", { - attributes: { - abilities: { - projectCollection: { - create: true - } - } - } - }) - ); - - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(mount($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project-collection/__tests__/Settings-test.js b/client/src/backend/containers/project-collection/__tests__/Settings-test.js deleted file mode 100644 index 826710cbdb..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/Settings-test.js +++ /dev/null @@ -1,23 +0,0 @@ -import { ProjectCollectionSettings } from "../Settings"; -import ProjectCollectionNew from "../New"; - -describe("backend/containers/project-collection/Settings", () => { - def("projectCollection", () => factory("projectCollection")); - def("pagination", () => fixtures.pagination()); - - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(mount($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project-collection/__tests__/Wrapper-test.js b/client/src/backend/containers/project-collection/__tests__/Wrapper-test.js deleted file mode 100644 index b31867d52c..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/Wrapper-test.js +++ /dev/null @@ -1,98 +0,0 @@ -import { ProjectCollectionWrapperContainer } from "../Wrapper"; -import { BreadcrumbsProvider } from "global/components/atomic/Breadcrumbs"; - -describe("backend/containers/project-collection/Wrapper", () => { - beforeEach(() => { - testHelpers.startSession($dispatch, $user); - }); - - def("abilities", () => ({ update: true })); - def("projectCollection", () => - factory("projectCollection", { attributes: { abilities } }) - ); - def("user", () => factory("user")); - def("history", () => fixtures.history()); - def("route", () => fixtures.route()); - def("root", () => ( - - key} - /> - - )); - - context("when there are project collections", () => { - def("projectCollections", () => collectionFactory("projectCollection")); - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); - }); - - context("when there are no project collections", () => { - def("projectCollections", () => []); - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); - }); -}); -// -// describe("Backend.ProjectCollection.Wrapper container", () => { -// const store = build.store(); -// const currentUser = build.entity.user("1"); -// store.dispatch({ -// type: "UPDATE_CURRENT_USER", -// error: false, -// payload: { -// data: currentUser -// } -// }); -// -// it("renders correctly when no project collections", () => { -// const component = renderer.create( -// wrapWithRouter( -// -// -// -// ) -// ); -// const tree = component.toJSON(); -// expect(tree).toMatchSnapshot(); -// }); -// -// it("renders correctly when no project collections", () => { -// const component = renderer.create( -// wrapWithRouter( -// -// -// -// ) -// ); -// const tree = component.toJSON(); -// expect(tree).toMatchSnapshot(); -// }); -// }); diff --git a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Detail-test.js.snap b/client/src/backend/containers/project-collection/__tests__/__snapshots__/Detail-test.js.snap deleted file mode 100644 index eec15e8e47..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Detail-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project-collection/Detail matches the snapshot when rendered 1`] = `"

project_collections.sr_list_title

project_collections.order_manually_instructions
project_collections.order_manually
project_collections.order_collection_manually
"`; diff --git a/client/src/backend/containers/project-collection/__tests__/__snapshots__/ManageProjects-test.js.snap b/client/src/backend/containers/project-collection/__tests__/__snapshots__/ManageProjects-test.js.snap deleted file mode 100644 index 25db70ea6a..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/__snapshots__/ManageProjects-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project-collection/ManageProjects matches the snapshot when rendered 1`] = `"

A Project Collection

project_collections.manage_projects_instructions

project_collections.added_count

project_collections.added_count
  • Rowan Testactions.view_item

  • Rowan Testactions.view_item

  • Rowan Testactions.view_item

"`; diff --git a/client/src/backend/containers/project-collection/__tests__/__snapshots__/New-test.js.snap b/client/src/backend/containers/project-collection/__tests__/__snapshots__/New-test.js.snap deleted file mode 100644 index 15ae160fb6..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/__snapshots__/New-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project-collection/New matches the snapshot when rendered 1`] = `"

project_collections.manage

project_collections.collection_kind_instructions
actions.toggle_to_state
project_collections.short_description_instructions

forms.upload.instructions

gif, jpeg, jpg, png

project_collections.collection_icon_instructions

forms.upload.instructions

gif, jpeg, jpg, png

forms.upload.instructions

gif, jpeg, jpg, png

"`; diff --git a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Settings-test.js.snap b/client/src/backend/containers/project-collection/__tests__/__snapshots__/Settings-test.js.snap deleted file mode 100644 index 5b28e93b8d..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Settings-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project-collection/Settings matches the snapshot when rendered 1`] = `"

project_collections.manage

project_collections.collection_kind_instructions
actions.toggle_to_state
project_collections.short_description_instructions

forms.upload.instructions

gif, jpeg, jpg, png

project_collections.collection_icon_instructions

forms.upload.instructions

gif, jpeg, jpg, png

forms.upload.instructions

gif, jpeg, jpg, png

"`; diff --git a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Wrapper-test.js.snap b/client/src/backend/containers/project-collection/__tests__/__snapshots__/Wrapper-test.js.snap deleted file mode 100644 index f3da81eeb6..0000000000 --- a/client/src/backend/containers/project-collection/__tests__/__snapshots__/Wrapper-test.js.snap +++ /dev/null @@ -1,5 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project-collection/Wrapper when there are no project collections matches the snapshot when rendered 1`] = `""`; - -exports[`backend/containers/project-collection/Wrapper when there are project collections matches the snapshot when rendered 1`] = `""`; diff --git a/client/src/backend/containers/project/Layout.js b/client/src/backend/containers/project/Layout.js index 51c09689c4..b2834b649c 100644 --- a/client/src/backend/containers/project/Layout.js +++ b/client/src/backend/containers/project/Layout.js @@ -110,7 +110,7 @@ export class ProjectLayoutContainer extends PureComponent { failureRedirect={lh.link("backendProject", project.id)} > { - return { - twitterQueries: select(requests.beTwitterQueries, state.entityStore), - twitterQueriesMeta: meta(requests.beTwitterQueries, state.entityStore) - }; - }; - - static displayName = "Project.Social.TwitterQueries"; - - static propTypes = { - project: PropTypes.object, - twitterQueries: PropTypes.array, - twitterQueriesMeta: PropTypes.object, - match: PropTypes.object, - dispatch: PropTypes.func, - t: PropTypes.func - }; - - componentDidMount() { - this.fetchTwitterQueries(1); - } - - fetchTwitterQueries(page) { - const pagination = { number: page, size: perPage }; - const action = request( - projectsAPI.twitterQueries(this.props.project.id, pagination), - requests.beTwitterQueries - ); - this.props.dispatch(action); - } - - handlePageChange(event, page) { - this.fetchTwitterQueries(page); - } - - pageChangeHandlerCreator = page => { - return event => { - this.handlePageChange(event, page); - }; - }; - - render() { - const { twitterQueries, twitterQueriesMeta, project, t } = this.props; - if (!twitterQueriesMeta || !twitterQueries) return null; - - const active = get(this.props.match, "params.qId"); - - return ( - - - ]} - /> - - ); - } -} - -export default withTranslation()( - connect(ProjectSocialTwitterQueriesContainer.mapStateToProps)( - ProjectSocialTwitterQueriesContainer - ) -); diff --git a/client/src/backend/containers/project/social/Wrapper.js b/client/src/backend/containers/project/social/Wrapper.js deleted file mode 100644 index 385f0fa15f..0000000000 --- a/client/src/backend/containers/project/social/Wrapper.js +++ /dev/null @@ -1,40 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import TwitterQueries from "./TwitterQueries"; -import { childRoutes } from "helpers/router"; -import lh from "helpers/linkHandler"; - -import Authorize from "hoc/Authorize"; - -export default class ProjectSocialWrapperContainer extends Component { - static displayName = "Project.Social.Wrapper"; - - static propTypes = { - project: PropTypes.object, - route: PropTypes.object, - history: PropTypes.object, - match: PropTypes.object - }; - - render() { - const project = this.props.project; - const closeUrl = lh.link("backendProjectSocial", project.id); - - return ( - -
- {childRoutes(this.props.route, { - drawer: true, - drawerProps: { closeUrl } - })} - -
-
- ); - } -} diff --git a/client/src/backend/containers/project/social/__tests__/TwitterQueries-test.js b/client/src/backend/containers/project/social/__tests__/TwitterQueries-test.js deleted file mode 100644 index 391bc8ce60..0000000000 --- a/client/src/backend/containers/project/social/__tests__/TwitterQueries-test.js +++ /dev/null @@ -1,25 +0,0 @@ -import { ProjectSocialTwitterQueriesContainer } from "../TwitterQueries"; - -describe("backend/containers/project/social/TwitterQueries", () => { - def("pagination", () => fixtures.pagination()); - def("twitterQueries", () => collectionFactory("twitterQuery")); - def("project", () => factory("project")); - def("match", () => ({ params: { qId: "twitterQuery-2" } })); - - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project/social/__tests__/Wrapper-test.js b/client/src/backend/containers/project/social/__tests__/Wrapper-test.js deleted file mode 100644 index 64b9be1d4b..0000000000 --- a/client/src/backend/containers/project/social/__tests__/Wrapper-test.js +++ /dev/null @@ -1,13 +0,0 @@ -import ProjectSocialWrapperContainer from "../Wrapper"; - -describe("backend/containers/project/social/Wrapper", () => { - def("project", () => factory("project")); - def("route", () => fixtures.route()); - def("root", () => ( - - )); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/project/social/__tests__/__snapshots__/TwitterQueries-test.js.snap b/client/src/backend/containers/project/social/__tests__/__snapshots__/TwitterQueries-test.js.snap deleted file mode 100644 index 100868dee1..0000000000 --- a/client/src/backend/containers/project/social/__tests__/__snapshots__/TwitterQueries-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project/social/TwitterQueries matches the snapshot when rendered 1`] = `"

projects.twitter_queries

"`; diff --git a/client/src/backend/containers/project/social/__tests__/__snapshots__/Wrapper-test.js.snap b/client/src/backend/containers/project/social/__tests__/__snapshots__/Wrapper-test.js.snap deleted file mode 100644 index 2103ae3152..0000000000 --- a/client/src/backend/containers/project/social/__tests__/__snapshots__/Wrapper-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/project/social/Wrapper matches the snapshot when rendered 1`] = `"
"`; diff --git a/client/src/backend/containers/project/social/index.js b/client/src/backend/containers/project/social/index.js deleted file mode 100644 index 0c1503e00d..0000000000 --- a/client/src/backend/containers/project/social/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import TwitterQueries from "./TwitterQueries"; -import Wrapper from "./Wrapper"; - -export default { - TwitterQueries, - Wrapper -}; diff --git a/client/src/backend/containers/route-containers.js b/client/src/backend/containers/route-containers.js index d15e21bbb2..cff1d7e4e9 100644 --- a/client/src/backend/containers/route-containers.js +++ b/client/src/backend/containers/route-containers.js @@ -11,7 +11,6 @@ import Makers from "backend/containers/makers"; import Ingestion from "backend/containers/ingestion"; import ProjectCollection from "backend/containers/project-collection"; import Permission from "backend/containers/permission"; -import TwitterQuery from "backend/containers/twitter-query"; import Records from "backend/containers/Records"; import Users from "backend/containers/users"; import Pages from "backend/containers/pages"; @@ -101,9 +100,6 @@ export default { ProjectEntitlements: Project.ProjectEntitlements, ProjectExportations: Project.ProjectExportations, ProjectMetadata: Project.Metadata, - ProjectSocialWrapper: Project.Social.Wrapper, - TwitterQueryNew: TwitterQuery.New, - TwitterQueryEdit: TwitterQuery.Edit, ProjectLayout: Project.Layout, ContentBlockNew: Content.New, ContentBlockEdit: Content.Edit, diff --git a/client/src/backend/containers/settings/Ingestion.js b/client/src/backend/containers/settings/Ingestion.js index 908b7bd66b..3bddf41c90 100644 --- a/client/src/backend/containers/settings/Ingestion.js +++ b/client/src/backend/containers/settings/Ingestion.js @@ -49,6 +49,7 @@ export class SettingsIngestionContainer extends PureComponent { - - - - - - - - - - - - - { - return { - settings: select(requests.settings, state.entityStore), - twitterQuery: select(requests.beTwitterQuery, state.entityStore) - }; - }; - - static displayName = "TwitterQuery.Edit"; - - static propTypes = { - twitterQuery: PropTypes.object, - match: PropTypes.object, - history: PropTypes.object, - dispatch: PropTypes.func, - settings: PropTypes.object, - confirm: PropTypes.func.isRequired, - t: PropTypes.func - }; - - static defaultProps = { - confirm: (heading, message, callback) => callback() - }; - - componentDidMount() { - this.fetchTwitterQuery(this.props.match.params.id); - } - - componentDidUpdate(prevProps) { - if (prevProps.match.params.id !== this.props.match.params.id) { - this.fetchTwitterQuery(this.props.match.params.id); - } - } - - componentWillUnmount() { - this.props.dispatch(flush([requests.beTwitterQuery])); - } - - get twitterEnabled() { - const { settings } = this.props; - if (!settings) return false; - - const { - twitterAppId, - twitterAccessToken - } = settings.attributes.integrations; - return twitterAppId && twitterAccessToken; - } - - fetchTwitterQuery(id) { - const call = twitterQueriesAPI.show(id); - const queryRequest = request(call, requests.beTwitterQuery); - this.props.dispatch(queryRequest); - } - - handleQueryDestroy = () => { - const heading = this.props.t("modals.delete_twitter"); - const message = ( -
- -
- ); - this.props.confirm(heading, message, this.destroyQuery); - }; - - destroyQuery = () => { - const { twitterQuery } = this.props; - const call = twitterQueriesAPI.destroy(twitterQuery.id); - const options = { removes: twitterQuery }; - const queryRequest = request(call, requests.beTwitterQueryDestroy, options); - this.props.dispatch(queryRequest).promise.then(() => { - this.redirectToProjectSocial(this.props.match.params.pId); - }); - }; - - handleQueryFetch = () => { - const call = twitterQueriesAPI.fetch(this.props.twitterQuery.id); - const queryRequest = request(call, requests.beTwitterQueryFetch); - this.props.dispatch(queryRequest).promise.then(() => { - this.redirectToProjectSocial(this.props.match.params.pId); - }); - }; - - redirectToProjectSocial(pId) { - return this.props.history.push(lh.link("backendProjectSocial", pId)); - } - - render() { - if (!this.props.twitterQuery) return null; - const { twitterQuery, t } = this.props; - const projectId = this.props.match.params.pId; - - const buttons = [ - { - onClick: this.handleQueryDestroy, - icon: "delete32", - label: t("actions.delete"), - className: "utility-button__icon--notice" - } - ]; - if (this.twitterEnabled) - buttons.push({ - onClick: this.handleQueryFetch, - icon: "reload32", - label: t("projects.social.fetch_label"), - className: "utility-button__icon--highlight" - }); - - return ( -
- - -
- ); - } -} - -export default withTranslation()( - withConfirmation(connectAndFetch(TwitterQueryEditContainer)) -); diff --git a/client/src/backend/containers/twitter-query/New.js b/client/src/backend/containers/twitter-query/New.js deleted file mode 100644 index d8e44e3a1f..0000000000 --- a/client/src/backend/containers/twitter-query/New.js +++ /dev/null @@ -1,52 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import { withTranslation } from "react-i18next"; -import connectAndFetch from "utils/connectAndFetch"; -import TwitterQuery from "backend/components/twitter-query"; -import { requests } from "api"; -import lh from "helpers/linkHandler"; -import Layout from "backend/components/layout"; - -export class TwitterQueryNewContainer extends Component { - static displayName = "TwitterQuery.New"; - - static propTypes = { - match: PropTypes.object, - history: PropTypes.object, - twitterQuery: PropTypes.object, - t: PropTypes.func - }; - - constructor() { - super(); - this.defaultQuery = { attributes: { active: true } }; - } - - handleSuccess = () => { - const projectId = this.props.match.params.pId; - const path = lh.link("backendProjectSocial", projectId); - this.props.history.push(path); - }; - - render() { - const pId = this.props.match.params.pId; - - return ( -
- - -
- ); - } -} - -export default withTranslation()(connectAndFetch(TwitterQueryNewContainer)); diff --git a/client/src/backend/containers/twitter-query/__tests__/Edit-test.js b/client/src/backend/containers/twitter-query/__tests__/Edit-test.js deleted file mode 100644 index 2778047c2d..0000000000 --- a/client/src/backend/containers/twitter-query/__tests__/Edit-test.js +++ /dev/null @@ -1,17 +0,0 @@ -import { TwitterQueryEditContainer } from "../Edit"; - -describe("backend/containers/twitter-query/Edit", () => { - def("twitterQuery", () => factory("twitterQuery")); - def("root", () => ( - key} - /> - )); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/twitter-query/__tests__/New-test.js b/client/src/backend/containers/twitter-query/__tests__/New-test.js deleted file mode 100644 index f4ba4247e8..0000000000 --- a/client/src/backend/containers/twitter-query/__tests__/New-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { TwitterQueryNewContainer } from "../New"; - -describe("backend/containers/twitter-query/New", () => { - def("root", () => ( - key} /> - )); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/backend/containers/twitter-query/__tests__/__snapshots__/Edit-test.js.snap b/client/src/backend/containers/twitter-query/__tests__/__snapshots__/Edit-test.js.snap deleted file mode 100644 index 3e4862fbff..0000000000 --- a/client/src/backend/containers/twitter-query/__tests__/__snapshots__/Edit-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/twitter-query/Edit matches the snapshot when rendered 1`] = `"
"`; diff --git a/client/src/backend/containers/twitter-query/__tests__/__snapshots__/New-test.js.snap b/client/src/backend/containers/twitter-query/__tests__/__snapshots__/New-test.js.snap deleted file mode 100644 index 4e2c7103fb..0000000000 --- a/client/src/backend/containers/twitter-query/__tests__/__snapshots__/New-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`backend/containers/twitter-query/New matches the snapshot when rendered 1`] = `"

projects.social.title

"`; diff --git a/client/src/backend/containers/twitter-query/index.js b/client/src/backend/containers/twitter-query/index.js deleted file mode 100644 index d2e1fa2f56..0000000000 --- a/client/src/backend/containers/twitter-query/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import Edit from "./Edit"; -import New from "./New"; - -export default { - Edit, - New -}; diff --git a/client/src/backend/routes.js b/client/src/backend/routes.js index 276ba698f1..aefb2345ac 100644 --- a/client/src/backend/routes.js +++ b/client/src/backend/routes.js @@ -558,31 +558,6 @@ const routes = { path: "/backend/projects/:id/metadata", helper: p => `/backend/projects/${p}/metadata` }, - { - name: "backendProjectSocial", - exact: false, - component: "ProjectSocialWrapper", - path: "/backend/projects/:pId/social/:type(twitter-query)?/:qId?", - helper: p => `/backend/projects/${p}/social`, - routes: [ - { - name: "backendProjectSocialTwitterQueryNew", - exact: true, - component: "TwitterQueryNew", - path: "/backend/projects/:pId/social/twitter-query/new", - helper: pId => - `/backend/projects/${pId}/social/twitter-query/new` - }, - { - name: "backendProjectSocialTwitterQuery", - exact: true, - component: "TwitterQueryEdit", - path: "/backend/projects/:pId/social/twitter-query/:id", - helper: (pId, id) => - `/backend/projects/${pId}/social/twitter-query/${id}` - } - ] - }, { name: "backendProjectExportations", exact: false, diff --git a/client/src/config/app/head.js b/client/src/config/app/head.js index b69b46449a..bb67363a45 100644 --- a/client/src/config/app/head.js +++ b/client/src/config/app/head.js @@ -2,8 +2,6 @@ export default { meta: { charset: "utf-8", siteName: "Manifold Scholarship", - locale: "en_US", - twitterCard: "summary_large_image", - twitterSite: "manifoldscholar" + locale: "en_US" } }; diff --git a/client/src/config/app/locale/en-US/json/backend/layout.json b/client/src/config/app/locale/en-US/json/backend/layout.json index 94fdb733c5..5b6c8a5ad6 100644 --- a/client/src/config/app/locale/en-US/json/backend/layout.json +++ b/client/src/config/app/locale/en-US/json/backend/layout.json @@ -28,8 +28,6 @@ "hero_block_instructions": "The Hero Block is the top of your {{entity}} page. Customize its content, layout, and settings here.", "calls_to_action": "Calls-to-Action", "calls_to_action_description": "Buttons and links to related resources", - "social_links": "Social Links", - "social_links_description": "Links to social platforms and hashtag", "visibility_options": { "always": "Always Visible", "authorized": "Visible Only When Authorized", @@ -55,8 +53,6 @@ "cover_image": "Cover Image", "cover_image_alt_label": "Cover Image Alt Text", "cover_image_instructions": "If a cover is set for the {{entity}}, it will appear over the hero, to the right of the description.", - "social_id": "{{social}} ID", - "social_placeholder": "Enter the {{entity}} {{social}} ID", "hashtag": "Hashtag", "hashtag_placeholder": "Enter {{entity}} Hashtag" }, diff --git a/client/src/config/app/locale/en-US/json/backend/projects.json b/client/src/config/app/locale/en-US/json/backend/projects.json index 2dbd86d43b..8823d35cc9 100644 --- a/client/src/config/app/locale/en-US/json/backend/projects.json +++ b/client/src/config/app/locale/en-US/json/backend/projects.json @@ -7,9 +7,6 @@ "settings": "Project Settings", "activity": "Activity", "changes": "Project Changes", - "twitter_queries": "Twitter Queries", - "twitter_queries_instructions": "Manifold will periodically fetch tweets according to the queries specified below.", - "add_twitter_label": "Add New Twitter Query", "manage_resources": "Manage Resources", "manage_resource_collections": "Manage Resource Collections", "contributors_header": "Manage Contributors", @@ -87,7 +84,6 @@ "extended_descript_prompt": "Do you need additional space to describe your project?", "extended_descript_instructions": "A freeform content block can be used to add text contextualizing your project.", "activity_prompt": "Will your project change frequently?", - "activity_instructions": "Manifold can showcase the evolution of your project on the platform and in the Twitterverse.", "save": "Save and Continue" } }, @@ -160,19 +156,6 @@ "pending": "Pending", "failure": "Failure" } - }, - "social": { - "title": "New Twitter Query", - "fetch_label": "Fetch Tweets", - "twitter_learn_more": "Learn more about Twitter <0>search operators.", - "query": "Query", - "query_placeholder": "Enter query", - "fetch_tweets_by": "Fetch tweets by:", - "most_recent": "Most Recent", - "most_popular": "Most Popular", - "save_query": "Save Twitter Query", - "no_tweets": "No tweets have been fetched yet.", - "tweets_fetched": "{{count}} Tweets fetched" } } } diff --git a/client/src/config/app/locale/en-US/json/backend/settings.json b/client/src/config/app/locale/en-US/json/backend/settings.json index 11d20b7124..ae362c748b 100644 --- a/client/src/config/app/locale/en-US/json/backend/settings.json +++ b/client/src/config/app/locale/en-US/json/backend/settings.json @@ -20,14 +20,6 @@ "copyright_label": "Copyright", "copyright_placeholder": "Enter Copyright Information", "copyright_instructions": "Enter the installation copyright information to be displayed in the footer.", - "share_label": "Social Sharing Message", - "share_instructions": "Enter the text you would like to appear when a page is shared.", - "twitter_label": "Twitter Account", - "twitter_placeholder": "Enter Twitter account", - "twitter_instructions": "Enter the twitter account associated with this installation.", - "facebook_label": "Facebook Page ID", - "facebook_placeholder": "Enter Facebook ID", - "facebook_instructions": "Enter an ID for this installation/organization's Facebook page.", "email_label": "Contact Email", "email_placeholder": "Enter an email address", "email_instructions": "If present, the footer will contain a link to a contact form that will be delivered to this address.", @@ -118,12 +110,6 @@ }, "integrations": { "header": "External Integrations Settings", - "facebook_id_label": "Facebook App ID", - "facebook_secret_label": "Facebook App Secret", - "twitter_key_label": "Twitter Consumer Key", - "twitter_secret_label": "Twitter Consumer Secret", - "twitter_token_label": "Twitter Access Token", - "twitter_token_secret_label": "Twitter Access Token Secret", "google_header": "Google Services Integration", "google_config_label": "Google Service Config File", "google_key_label": "Google Private Key", diff --git a/client/src/config/app/locale/en-US/json/reader/reader.json b/client/src/config/app/locale/en-US/json/reader/reader.json index fb6903d7f7..90ae3468c8 100644 --- a/client/src/config/app/locale/en-US/json/reader/reader.json +++ b/client/src/config/app/locale/en-US/json/reader/reader.json @@ -56,8 +56,11 @@ "you_highlighted": "You Highlighted", "reader_highlighted": "A Reader Highlighted", "attach_resource": "Attach resource to $t(glossary.selection_one)", - "share_selection": "$t(actions.share) $t(glossary.selection_one)", - "follow_link": "Follow link" + "app_share": "External App", + "share_selection": "$t(actions.share) $t(glossary.selection_one) with external app", + "follow_link": "Follow link", + "copy": "Copy URL", + "copy_selection": "Copy link to selection" }, "visibility": { "all_reading_groups": "All $t(glossary.reading_group_title_case_other)", diff --git a/client/src/config/app/locale/en-US/json/shared/actions.json b/client/src/config/app/locale/en-US/json/shared/actions.json index ad51b1696e..8631464461 100644 --- a/client/src/config/app/locale/en-US/json/shared/actions.json +++ b/client/src/config/app/locale/en-US/json/shared/actions.json @@ -21,6 +21,8 @@ "confirm_delete": "$t(actions.confirm) $t(actions.delete)", "continue": "Continue", "copy": "Copy", + "copy_link_to": "Copy link to {{title}}", + "copied": "Copied!", "create": "Create", "create_collection": "$t(actions.create) a $t(glossary.collection_one)", "create_journal": "$t(actions.create) a $t(glossary.journal_one)", @@ -72,6 +74,7 @@ "select_all_matching": "Select all {{ count }} {{ unit }} matching this search", "select_item": "Select {{ item }}", "share": "Share", + "share_title": "$t(actions.share) {{title}}", "show": "Show", "show_all": "Show all", "show_entity": "Show {{entity}}", diff --git a/client/src/config/app/locale/en-US/json/shared/modals.json b/client/src/config/app/locale/en-US/json/shared/modals.json index dd81099a9c..051db5c4d2 100644 --- a/client/src/config/app/locale/en-US/json/shared/modals.json +++ b/client/src/config/app/locale/en-US/json/shared/modals.json @@ -37,8 +37,6 @@ "delete_subject": "Are you sure you want to delete this subject?", "delete_text": "Are you sure you want to delete this text?", "delete_text_body": "All annotations and highlights of this text will also be deleted. $t(modals.confirm_body)", - "delete_twitter": "Are you sure you want to delete this twitter query?", - "delete_twitter_body": "

This action will delete the query along with all events associated with it.

This action cannot be undone.

Set the query to inactive to prevent fetching while preserving existing tweet events.

", "delete_user": "Are you sure you want delete this user?", "delete_volume": "Are you sure you want to delete this volume?", "password_reset": "How would you like to reset the user's password?", diff --git a/client/src/frontend/components/entity/Hero/helpers.js b/client/src/frontend/components/entity/Hero/helpers.js index 19b232f438..b34f3186fa 100644 --- a/client/src/frontend/components/entity/Hero/helpers.js +++ b/client/src/frontend/components/entity/Hero/helpers.js @@ -36,12 +36,6 @@ export const getPartsData = entity => { : false; const bgAlt = entity.attributes.heroAltText; - const twitter = entity.attributes.twitterId; - const instagram = entity.attributes.instagramId; - const facebook = entity.attributes.facebookId; - const hashtag = entity.attributes.hashtag; - const social = !!twitter || !!instagram || !!facebook || !!hashtag; - const description = entity.attributes.descriptionFormatted; const { creators, flattenedCollaborators } = entity.relationships; const cover = entity.attributes.coverStyles?.medium; @@ -53,11 +47,6 @@ export const getPartsData = entity => { copy, bgImage, bgAlt, - twitter, - instagram, - facebook, - hashtag, - social, description, creators, flattenedCollaborators, diff --git a/client/src/frontend/components/entity/Hero/parts/CalloutList/styles.js b/client/src/frontend/components/entity/Hero/parts/CalloutList/styles.js index cdabaa10d0..fa4a26abda 100644 --- a/client/src/frontend/components/entity/Hero/parts/CalloutList/styles.js +++ b/client/src/frontend/components/entity/Hero/parts/CalloutList/styles.js @@ -2,7 +2,6 @@ import styled from "@emotion/styled"; import { respond } from "theme/styles/mixins"; import { breakpoints } from "theme/styles/variables/media"; import { transientOptions } from "helpers/emotionHelpers"; -import { SocialLinks } from "../Social/styles"; const BREAKPOINT = breakpoints[60]; const GUTTER = "20px"; @@ -16,10 +15,6 @@ export const Wrapper = styled("div", transientOptions)` * + & { margin-block-start: 20px; } - - + ${SocialLinks} { - margin-block: 35px; - } `; export const List = styled("div", transientOptions)` diff --git a/client/src/frontend/components/entity/Hero/parts/Social/index.js b/client/src/frontend/components/entity/Hero/parts/Social/index.js deleted file mode 100644 index 3bdf016b37..0000000000 --- a/client/src/frontend/components/entity/Hero/parts/Social/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from "react"; -import PropTypes from "prop-types"; -import { useTranslation } from "react-i18next"; -import IconComputed from "global/components/icon-computed"; -import * as Styled from "./styles"; - -export default function HeroSocial({ hashtag, twitter, facebook, instagram }) { - const { t } = useTranslation(); - - const url = (service, id) => { - switch (service) { - case "twitter": - return `https://twitter.com/${id}`; - case "instagram": - return `https://instagram.com/${id}`; - case "facebook": - return `https://facebook.com/${id}`; - default: - return null; - } - }; - - const socialLink = (service, id) => ( - - - - {t("external_links.view_on_social", { service })} - - - ); - - return ( - - {twitter && socialLink("twitter", twitter)} - {facebook && socialLink("facebook", facebook)} - {instagram && socialLink("instagram", instagram)} -
- {hashtag && ( - - {`#${hashtag}`} - - )} -
-
- ); -} - -HeroSocial.displayName = "Frontend.Entity.Hero.Parts.Social"; - -HeroSocial.propTypes = { - hashtag: PropTypes.string, - twitter: PropTypes.string, - facebook: PropTypes.string, - instagram: PropTypes.string -}; diff --git a/client/src/frontend/components/entity/Hero/parts/Social/styles.js b/client/src/frontend/components/entity/Hero/parts/Social/styles.js deleted file mode 100644 index b9afefdb5b..0000000000 --- a/client/src/frontend/components/entity/Hero/parts/Social/styles.js +++ /dev/null @@ -1,45 +0,0 @@ -import styled from "@emotion/styled"; -import { breakpoints } from "theme/styles/variables/media"; -import { respond } from "theme/styles/mixins"; - -const BREAKPOINT = breakpoints[60]; - -export const SocialLinks = styled.div` - grid-area: social; - color: var(--link-color, inherit); -`; - -export const Hashtag = styled.a` - color: inherit; - text-decoration: none; - font-family: var(--font-family-heading); - display: inline-block; - font-size: 16px; - font-weight: var(--font-weight-semibold); - - ${respond(`font-size: 18px;`, BREAKPOINT)} - - &:hover { - color: var(--hover-color); - } -`; - -export const Link = styled.a` - color: inherit; - text-decoration: none; - display: inline-block; - padding: 5px; - color: var(--Social-icons-color, --color-neutral-ui-light); - - &:first-child { - margin-left: -5px; - } - - + div > ${Hashtag} { - margin-block-start: 15px; - } - - &:hover { - color: var(--hover-color); - } -`; diff --git a/client/src/frontend/components/entity/Hero/parts/index.js b/client/src/frontend/components/entity/Hero/parts/index.js index 768df89e14..5b984f1e76 100644 --- a/client/src/frontend/components/entity/Hero/parts/index.js +++ b/client/src/frontend/components/entity/Hero/parts/index.js @@ -3,5 +3,4 @@ export { default as Cover } from "./Cover"; export { default as Credits } from "./Credits"; export { default as Image } from "./Image"; export { default as Meta } from "./Meta"; -export { default as Social } from "./Social"; export { default as Title } from "./Title"; diff --git a/client/src/frontend/components/entity/Hero/patterns/IssueHero.js b/client/src/frontend/components/entity/Hero/patterns/IssueHero.js index 7cc5b51fbf..077aa5105f 100644 --- a/client/src/frontend/components/entity/Hero/patterns/IssueHero.js +++ b/client/src/frontend/components/entity/Hero/patterns/IssueHero.js @@ -1,6 +1,6 @@ import React, { useRef, useCallback } from "react"; import PropTypes from "prop-types"; -import { CalloutList, Cover, Credits, Meta, Social, Title } from "../parts"; +import { CalloutList, Cover, Credits, Meta, Title } from "../parts"; import EntityMasthead from "frontend/components/entity/Masthead"; import { getAuth, getPartsData } from "../helpers"; import EntityHero from "../EntityHero"; @@ -24,11 +24,6 @@ export default function IssueHero({ entity, mock }) { callouts, orderedCallouts, copy, - twitter, - instagram, - facebook, - hashtag, - social, description, creators, flattenedCollaborators, @@ -64,16 +59,6 @@ export default function IssueHero({ entity, mock }) { )} } - BottomLeftComponent={ - social && ( - - ) - } TopRightComponent={ <> {cover && } diff --git a/client/src/frontend/components/entity/Hero/patterns/JournalHero.js b/client/src/frontend/components/entity/Hero/patterns/JournalHero.js index 6bad56e7b6..77ab1c88d1 100644 --- a/client/src/frontend/components/entity/Hero/patterns/JournalHero.js +++ b/client/src/frontend/components/entity/Hero/patterns/JournalHero.js @@ -1,6 +1,6 @@ import React, { useRef, useCallback } from "react"; import PropTypes from "prop-types"; -import { CalloutList, Meta, Social, Title, Credits } from "../parts"; +import { CalloutList, Meta, Title, Credits } from "../parts"; import EntityMasthead from "frontend/components/entity/Masthead"; import EntityHero from "../EntityHero"; import { getAuth, getPartsData } from "../helpers"; @@ -13,11 +13,6 @@ export default function JournalHero({ entity, mock }) { const { callouts, orderedCallouts, - twitter, - instagram, - facebook, - hashtag, - social, description, flattenedCollaborators, creators, @@ -60,16 +55,6 @@ export default function JournalHero({ entity, mock }) { )} } - BottomLeftComponent={ - social && ( - - ) - } TopRightComponent={ !!callouts.length && ( } - BottomLeftComponent={ - social && ( - - ) - } TopRightComponent={ <> diff --git a/client/src/frontend/components/entity/Hero/styles.js b/client/src/frontend/components/entity/Hero/styles.js index 626c1f5e6c..dc8a9689a4 100644 --- a/client/src/frontend/components/entity/Hero/styles.js +++ b/client/src/frontend/components/entity/Hero/styles.js @@ -44,7 +44,6 @@ export const JournalWrapper = styled(Wrapper)` --left-column-width: 51.5%; --column-gap: ${fluidScale("180px", "60px")}; --Meta-font-family: var(--font-family-heading); - --Social-icons-color: var(--color-base-neutral80); --link-color: var(--color-neutral-text-dark); --CalloutList-gutter: 16px; --CalloutList-margin: 22px; @@ -57,7 +56,6 @@ export const JournalWrapper = styled(Wrapper)` `; export const IssueWrapper = styled(Wrapper)` - --Social-icons-color: var(--color-base-neutral80); --link-color: var(--color-neutral-text-dark); color: var(--color-neutral-text-extra-dark); diff --git a/client/src/frontend/components/event/Event.js b/client/src/frontend/components/event/Event.js index 75a11d3d34..91437f688f 100644 --- a/client/src/frontend/components/event/Event.js +++ b/client/src/frontend/components/event/Event.js @@ -2,22 +2,6 @@ import React, { PureComponent } from "react"; import PropTypes from "prop-types"; import Tile from "./Tile/index"; import lh from "helpers/linkHandler"; -import Loadable from "@docusaurus/react-loadable"; - -/* eslint-disable react/prop-types */ -const autolinkTweet = props => { - const Loaded = Loadable({ - loader: () => import(/* webpackChunkName: "autolinker" */ "autolinker"), - render(Autolinker) { - const excerpt = Autolinker.default.link(props.excerpt, props.options); - return

; - }, - loading: () =>

- }); - - return ; -}; -/* eslint-enable react/prop-types */ export default class Event extends PureComponent { static displayName = "Event.Event"; @@ -37,8 +21,6 @@ export default class Event extends PureComponent { switch (type) { case "annotation_created": return this.propsForAnnotationCreated(attributes); - case "tweet": - return this.propsForTweet(attributes); case "resource_added": return this.propsForResourceAdded(attributes); case "text_added": @@ -60,33 +42,6 @@ export default class Event extends PureComponent { }; } - propsForTweet(attr) { - const contentProps = { - excerpt: attr.excerpt, - options: { hashtag: "twitter", mention: "twitter" } - }; - - return { - italicizeContent: true, - icon: "activityTweet64", - type: attr.eventType, - preAttribution: ( - - {"@" + attr.attributionIdentifier} - - ), - content: autolinkTweet(contentProps), - date: attr.createdAt, - dateFormat: "MMMM dd, yyyy", - linkHref: attr.eventUrl, - linkTarget: "_blank" - }; - } - propsForProjectCreated(attr) { return { type: attr.eventType, diff --git a/client/src/frontend/components/project/__tests__/Detail-test.js b/client/src/frontend/components/project/__tests__/Detail-test.js deleted file mode 100644 index 3eaa7967b7..0000000000 --- a/client/src/frontend/components/project/__tests__/Detail-test.js +++ /dev/null @@ -1,12 +0,0 @@ -import Detail from "../Detail"; -import { project } from "./__fixtures__"; - -describe("frontend/components/project/Detail", () => { - def("project", () => project()); - - def("root", () => ); - - it("matches the snapshot when rendered", () => { - expect(render($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/project/__tests__/__fixtures__/index.js b/client/src/frontend/components/project/__tests__/__fixtures__/index.js deleted file mode 100644 index 23a743f352..0000000000 --- a/client/src/frontend/components/project/__tests__/__fixtures__/index.js +++ /dev/null @@ -1,36 +0,0 @@ -export const project = (abilities = {}) => { - const events = collectionFactory("event"); - - const project = factory("project", { - attributes: { - abilities - } - }); - project.relationships.creators = [ - factory("maker", { - id: "creator-1" - }), - factory("maker", { - id: "creator-2" - }) - ]; - project.relationships.textCategories = [ - factory("textCategory", { - id: "textCategory-1" - }), - factory("textCategory", { - id: "textCategory-2" - }) - ]; - project.relationships.contributors = [ - factory("maker", { - id: "contributor-1" - }), - factory("maker", { - id: "contributor-2" - }) - ]; - return project; -}; - -export default { project }; diff --git a/client/src/frontend/components/project/__tests__/__snapshots__/Detail-test.js.snap b/client/src/frontend/components/project/__tests__/__snapshots__/Detail-test.js.snap deleted file mode 100644 index 48726e6226..0000000000 --- a/client/src/frontend/components/project/__tests__/__snapshots__/Detail-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/project/Detail matches the snapshot when rendered 1`] = `"

Rowan Test

common.by John MiltonJohn Milton
glossary.contributor_title_case: John MiltonJohn Milton
The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.

Rowan, The Dog

"`; diff --git a/client/src/frontend/components/resource-collection-list/__tests__/Grid-test.js b/client/src/frontend/components/resource-collection-list/__tests__/Grid-test.js deleted file mode 100644 index 9495861d9c..0000000000 --- a/client/src/frontend/components/resource-collection-list/__tests__/Grid-test.js +++ /dev/null @@ -1,13 +0,0 @@ -import Grid from "../Grid"; - -describe("frontend/components/resource-collection-list/Grid", () => { - def("resourceCollections", () => collectionFactory("resourceCollection")); - def("project", () => factory("project")); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/resource-collection-list/__tests__/__snapshots__/Grid-test.js.snap b/client/src/frontend/components/resource-collection-list/__tests__/__snapshots__/Grid-test.js.snap deleted file mode 100644 index c662f9f2ef..0000000000 --- a/client/src/frontend/components/resource-collection-list/__tests__/__snapshots__/Grid-test.js.snap +++ /dev/null @@ -1,1065 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/resource-collection-list/Grid matches the snapshot 1`] = ` - -
  • - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - urlCreator={[Function]} - /> -
  • -
  • - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - urlCreator={[Function]} - /> -
  • -
  • - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - urlCreator={[Function]} - /> -
  • -
    -`; diff --git a/client/src/frontend/components/resource-list/__tests__/Cards-test.js b/client/src/frontend/components/resource-list/__tests__/Cards-test.js deleted file mode 100644 index 517a114f0f..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/Cards-test.js +++ /dev/null @@ -1,26 +0,0 @@ -import Cards from "../Cards"; - -describe("frontend/components/resource-list/Cards", () => { - def("project", () => factory("project")); - def("resources", () => - collectionFactory("resource", 3, (type, index) => { - return { - id: `${type}-${index}`, - relationships: { project: $project } - }; - }) - ); - def("pageChange", () => jest.fn()); - def("root", () => ( - $pageChange} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/resource-list/__tests__/Slideshow-test.js b/client/src/frontend/components/resource-list/__tests__/Slideshow-test.js deleted file mode 100644 index 067a46da7a..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/Slideshow-test.js +++ /dev/null @@ -1,20 +0,0 @@ -import SlideShow from "../SlideShow"; - -describe("frontend/components/resource-list/Slideshow", () => { - def("resourceCollection", () => factory("resourceCollection")); - def("collectionResources", () => collectionFactory("collectionResource")); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/resource-list/__tests__/Thumbnails-test.js b/client/src/frontend/components/resource-list/__tests__/Thumbnails-test.js deleted file mode 100644 index a17335c964..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/Thumbnails-test.js +++ /dev/null @@ -1,20 +0,0 @@ -import Thumbnails from "../Thumbnails"; - -describe("frontend/components/resource-list/Thumbnails", () => { - def("project", () => factory("project")); - - def("resources", () => - collectionFactory("resource", 3, (type, index) => { - return { - id: `${type}-${index}`, - relationships: { project: $project } - }; - }) - ); - - def("root", () => ); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Cards-test.js.snap b/client/src/frontend/components/resource-list/__tests__/__snapshots__/Cards-test.js.snap deleted file mode 100644 index bc69e3e97e..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Cards-test.js.snap +++ /dev/null @@ -1,3540 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/resource-list/Cards matches the snapshot 1`] = ` - - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - resource={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-0", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-0", - "relationships": Object { - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - /> -
    - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - resource={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-1", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-1", - "relationships": Object { - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - /> -
    - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - resource={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-2", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-2", - "relationships": Object { - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - /> -
    -
    -`; diff --git a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Slideshow-test.js.snap b/client/src/frontend/components/resource-list/__tests__/__snapshots__/Slideshow-test.js.snap deleted file mode 100644 index ce4f25073e..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Slideshow-test.js.snap +++ /dev/null @@ -1,499 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/resource-list/Slideshow matches the snapshot 1`] = ` -
    <1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
    <1>", - }, - }, - }, - }, - }, - } - } - pagination={ - Object { - "currentPage": 1, - "nextPage": 2, - "perPage": 1, - "prevPage": 0, - "totalCount": 2, - "totalPages": 2, - } - } - resourceCollection={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "collectionResourcesCount": 0, - "createdAt": "2017-04-24T23:25:50.161Z", - "resourceKinds": Array [ - "image", - "video", - ], - "resourceTags": Array [ - "dog", - ], - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "thumbnailStyles": Object {}, - "title": "Rowan", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - slideOptions={Object {}} - t={[Function]} - tReady={true} -/> -`; diff --git a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Thumbnails-test.js.snap b/client/src/frontend/components/resource-list/__tests__/__snapshots__/Thumbnails-test.js.snap deleted file mode 100644 index ac55ded815..0000000000 --- a/client/src/frontend/components/resource-list/__tests__/__snapshots__/Thumbnails-test.js.snap +++ /dev/null @@ -1,1986 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/resource-list/Thumbnails matches the snapshot 1`] = ` - -
  • - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - showTitle={true} - /> - -
  • -
  • - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - showTitle={true} - /> - -
  • -
  • - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - }, - }, - "type": "resources", - } - } - showTitle={true} - /> - -
  • -
    -`; diff --git a/client/src/frontend/components/resource/Detail/index.js b/client/src/frontend/components/resource/Detail/index.js index f92ab9036f..73f58b288f 100644 --- a/client/src/frontend/components/resource/Detail/index.js +++ b/client/src/frontend/components/resource/Detail/index.js @@ -2,17 +2,17 @@ import React from "react"; import PropTypes from "prop-types"; import { useTranslation } from "react-i18next"; import CommentContainer from "global/containers/comment"; -import Utility from "frontend/components/utility"; import Hero from "../Hero"; import LinkComponent from "../Link"; import Meta from "../Meta"; import Title from "../Title"; import VariantList from "../VariantList"; +import Share from "../Share"; import { useSelector } from "react-redux"; import { meta } from "utils/entityUtils"; import * as Styled from "./styles"; -export default function ResourceDetail({ resourceUrl, resource }) { +export default function ResourceDetail({ resource, projectTitle }) { const { t } = useTranslation(); const commentsMeta = useSelector(state => meta(`comments-for-${resource.id}`, state.entityStore) @@ -27,6 +27,10 @@ export default function ResourceDetail({ resourceUrl, resource }) { const attr = resource.attributes; + const shareTitle = projectTitle + ? `${attr.title} | ${projectTitle}` + : attr.title; + return ( @@ -67,7 +71,7 @@ export default function ResourceDetail({ resourceUrl, resource }) { )} - + @@ -79,7 +83,6 @@ export default function ResourceDetail({ resourceUrl, resource }) { ResourceDetail.displayName = "Resource.Detail"; ResourceDetail.propTypes = { - projectUrl: PropTypes.string, - resourceUrl: PropTypes.string.isRequired, - resource: PropTypes.object + resource: PropTypes.object, + projectTitle: PropTypes.string }; diff --git a/client/src/frontend/components/resource/Detail/styles.js b/client/src/frontend/components/resource/Detail/styles.js index 364ab10a9f..459605f557 100644 --- a/client/src/frontend/components/resource/Detail/styles.js +++ b/client/src/frontend/components/resource/Detail/styles.js @@ -53,18 +53,6 @@ export const MetadataWrapper = styled.div` `, 65 )} - - .share-nav-primary { - margin-block-end: ${fluidScale("32px", "25px")}; - color: var(--color-neutral-text-dark); - - &:not(:first-child) { - margin-block-start: ${fluidScale("32px", "25px")}; - } - - &__label::after { - content: ":"; - } } `; diff --git a/client/src/frontend/components/resource/Link/styles.js b/client/src/frontend/components/resource/Link/styles.js index 20df6eb36f..b95c9c5d2d 100644 --- a/client/src/frontend/components/resource/Link/styles.js +++ b/client/src/frontend/components/resource/Link/styles.js @@ -8,6 +8,10 @@ export const Link = styled.a` line-height: 13px; text-align: center; + & + & { + margin-block-start: 0.75rem; + } + ${respond( ` width: 180px; diff --git a/client/src/frontend/components/resource/Meta/styles.js b/client/src/frontend/components/resource/Meta/styles.js index a7cd42d26e..d37d86ab49 100644 --- a/client/src/frontend/components/resource/Meta/styles.js +++ b/client/src/frontend/components/resource/Meta/styles.js @@ -1,9 +1,13 @@ import styled from "@emotion/styled"; -import { respond } from "theme/styles/mixins"; +import { respond, fluidScale } from "theme/styles/mixins"; export const Meta = styled.section` display: block; + &:not(:first-child) { + margin-block-start: ${fluidScale("32px", "25px")}; + } + > * + * { margin-block-start: 22px; } diff --git a/client/src/frontend/components/resource/Share/index.js b/client/src/frontend/components/resource/Share/index.js new file mode 100644 index 0000000000..964af090cd --- /dev/null +++ b/client/src/frontend/components/resource/Share/index.js @@ -0,0 +1,32 @@ +import React from "react"; +import PropTypes from "prop-types"; +import useShare from "hooks/useShare"; +import IconComposer from "global/components/utility/IconComposer"; +import * as Styled from "../Link/styles"; + +export default function Share({ title }) { + const { disabled, canRender, onClick, icon, label, srLabel } = useShare( + title + ); + + return canRender ? ( + + + {label} + + {srLabel} + + + ) : null; +} + +Share.displayName = "Resource.Detail.Share"; + +Share.propTypes = { + title: PropTypes.string.isRequired +}; diff --git a/client/src/frontend/components/utility/ShareBar.js b/client/src/frontend/components/utility/ShareBar.js deleted file mode 100644 index 555f406ec6..0000000000 --- a/client/src/frontend/components/utility/ShareBar.js +++ /dev/null @@ -1,110 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import { withTranslation } from "react-i18next"; -import { TwitterButton, FacebookButton } from "react-sociable"; -import IconComposer from "global/components/utility/IconComposer"; - -import withSettings from "hoc/withSettings"; - -class ShareBar extends Component { - static displayName = "Utility.ShareBar"; - - static propTypes = { - label: PropTypes.string, - url: PropTypes.string, - message: PropTypes.string, - settings: PropTypes.object, - t: PropTypes.func - }; - - static defaultProps = { - label: "Share" - }; - - constructor() { - super(); - this.state = { - inBrowser: false - }; - } - - componentDidMount() { - // This won't be run by the server, so set an instance variable here - // that will be hidden otherwise - if (this.state.inBrowser === false) { - /* eslint-disable react/no-did-mount-set-state */ - this.setState({ - inBrowser: true - }); - /* eslint-enable react/no-did-mount-set-state */ - } - } - - facebookAppId() { - const { settings } = this.props; - return settings.attributes.integrations.facebookAppId; - } - - message() { - if (this.props.message) return this.props.message; - const { settings } = this.props; - return settings.attributes.general.socialShareMessage; - } - - url() { - if (!this.state.inBrowser) return null; - const url = location.hostname + this.props.url; - return url; - } - - render() { - if (!this.state.inBrowser) return null; - if (!this.props.settings) return null; - - const twitterWindowOptions = ["", "", "width=600,height=300"]; - - const t = this.props.t; - - return ( - - ); - } -} - -export default withSettings(withTranslation()(ShareBar)); diff --git a/client/src/frontend/components/utility/__tests__/Sharebar-test.js b/client/src/frontend/components/utility/__tests__/Sharebar-test.js deleted file mode 100644 index ef5fd4935c..0000000000 --- a/client/src/frontend/components/utility/__tests__/Sharebar-test.js +++ /dev/null @@ -1,18 +0,0 @@ -import ShareBar from "../ShareBar"; - -describe("frontend/components/utility/Sharebar", () => { - def("settings", () => factory("settings")); - def("root", () => ( - - )); - - it("matches the snapshot when rendered", () => { - expect(mount($withApp($root)).html()).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/utility/__tests__/Toggle-test.js b/client/src/frontend/components/utility/__tests__/Toggle-test.js deleted file mode 100644 index 9eca1f44c7..0000000000 --- a/client/src/frontend/components/utility/__tests__/Toggle-test.js +++ /dev/null @@ -1,24 +0,0 @@ -import Toggle from "../Toggle"; - -describe("frontend/components/utility/Toggle", () => { - def("toggle", () => jest.fn()); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/components/utility/__tests__/__snapshots__/Sharebar-test.js.snap b/client/src/frontend/components/utility/__tests__/__snapshots__/Sharebar-test.js.snap deleted file mode 100644 index 5f9343763b..0000000000 --- a/client/src/frontend/components/utility/__tests__/__snapshots__/Sharebar-test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/utility/Sharebar matches the snapshot when rendered 1`] = `""`; diff --git a/client/src/frontend/components/utility/__tests__/__snapshots__/Toggle-test.js.snap b/client/src/frontend/components/utility/__tests__/__snapshots__/Toggle-test.js.snap deleted file mode 100644 index 4e3f3d125b..0000000000 --- a/client/src/frontend/components/utility/__tests__/__snapshots__/Toggle-test.js.snap +++ /dev/null @@ -1,121 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/components/utility/Toggle matches the snapshot 1`] = ` -
    <1>", - }, - }, - }, - }, - }, - "returnEmptyString": true, - "returnNull": true, - "returnObjects": false, - "returnedObjectHandler": false, - "saveMissing": false, - "saveMissingPlurals": true, - "saveMissingTo": "fallback", - "simplifyPluralSuffix": true, - "supportedLngs": false, - "updateMissing": false, - }, - "resolvedLanguage": "en-US", - "store": Object { - "en-US": Object { - "translation": Object { - "dashboard": Object { - "reader_stats": "Readers this week", - "stats_change": "Change from last week", - }, - "date_fns": null, - "forms": Object { - "upload": Object { - "image_preview": "<0>
    <1>", - }, - }, - }, - }, - }, - } - } - label="options" - optionOne={ - Object { - "icon": "resource24", - "label": "resources", - } - } - optionTwo={ - Object { - "icon": "resourceCollection64", - "label": "collection", - } - } - selected="resources" - t={[Function]} - tReady={true} -/> -`; diff --git a/client/src/frontend/components/utility/index.js b/client/src/frontend/components/utility/index.js index f87e3b974b..fb15b61ee6 100644 --- a/client/src/frontend/components/utility/index.js +++ b/client/src/frontend/components/utility/index.js @@ -1,9 +1,7 @@ import ConfirmableButton from "./ConfirmableButton"; import Toggle from "./Toggle"; -import ShareBar from "./ShareBar"; export default { ConfirmableButton, - Toggle, - ShareBar + Toggle }; diff --git a/client/src/frontend/containers/EventList/__tests__/EventList-test.js b/client/src/frontend/containers/EventList/__tests__/EventList-test.js deleted file mode 100644 index 013fb5d552..0000000000 --- a/client/src/frontend/containers/EventList/__tests__/EventList-test.js +++ /dev/null @@ -1,19 +0,0 @@ -import EventList from "../"; - -describe("frontend/containers/EventList/EventList", () => { - def("events", () => collectionFactory("event")); - def("project", () => - factory("project", { relationships: { events: $events } }) - ); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(mount($withApp($root))).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/EventList/__tests__/__snapshots__/EventList-test.js.snap b/client/src/frontend/containers/EventList/__tests__/__snapshots__/EventList-test.js.snap deleted file mode 100644 index 22b19878f0..0000000000 --- a/client/src/frontend/containers/EventList/__tests__/__snapshots__/EventList-test.js.snap +++ /dev/null @@ -1,745 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/EventList/EventList matches the snapshot 1`] = ` - - - - - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "events": Array [ - Object { - "attributes": Object { - "createdAt": "2017-04-24T23:25:50.161Z", - "eventSubtitle": "It was added", - "eventTitle": "Text Added", - "eventType": "text_added", - "projectSlug": "project-slug", - "subjectSlug": "subject-slug", - "subjectTitle": "New Text", - "subjectType": "Text", - }, - "id": "event-0", - "relationships": Object {}, - "type": "events", - }, - Object { - "attributes": Object { - "createdAt": "2017-04-24T23:25:50.161Z", - "eventSubtitle": "It was added", - "eventTitle": "Text Added", - "eventType": "text_added", - "projectSlug": "project-slug", - "subjectSlug": "subject-slug", - "subjectTitle": "New Text", - "subjectType": "Text", - }, - "id": "event-1", - "relationships": Object {}, - "type": "events", - }, - Object { - "attributes": Object { - "createdAt": "2017-04-24T23:25:50.161Z", - "eventSubtitle": "It was added", - "eventTitle": "Text Added", - "eventType": "text_added", - "projectSlug": "project-slug", - "subjectSlug": "subject-slug", - "subjectTitle": "New Text", - "subjectType": "Text", - }, - "id": "event-2", - "relationships": Object {}, - "type": "events", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> -
    -
    -
    -
    -
    -`; diff --git a/client/src/frontend/containers/Frontend/__tests__/Frontend-test.js b/client/src/frontend/containers/Frontend/__tests__/Frontend-test.js deleted file mode 100644 index 0c4e17fc36..0000000000 --- a/client/src/frontend/containers/Frontend/__tests__/Frontend-test.js +++ /dev/null @@ -1,21 +0,0 @@ -import { FrontendContainer } from "../"; - -describe("frontend/containers/Frontend/Frontend", () => { - def("notifications", () => ({ notifications: [] })); - def("settings", () => factory("settings")); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/Frontend/__tests__/__snapshots__/Frontend-test.js.snap b/client/src/frontend/containers/Frontend/__tests__/__snapshots__/Frontend-test.js.snap deleted file mode 100644 index ebb244343f..0000000000 --- a/client/src/frontend/containers/Frontend/__tests__/__snapshots__/Frontend-test.js.snap +++ /dev/null @@ -1,484 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/Frontend/Frontend matches the snapshot 1`] = ` - - - - -
    - -
    - -
    -
    -`; diff --git a/client/src/frontend/containers/ProjectDetail/__tests__/ProjectDetail-test.js b/client/src/frontend/containers/ProjectDetail/__tests__/ProjectDetail-test.js deleted file mode 100644 index e9d6765e96..0000000000 --- a/client/src/frontend/containers/ProjectDetail/__tests__/ProjectDetail-test.js +++ /dev/null @@ -1,18 +0,0 @@ -import ProjectDetailContainer from "../"; - -describe("frontend/containers/ProjectDetail/ProjectDetail", () => { - def("project", () => factory("project")); - def("settings", () => factory("settings")); - def("root", () => ( - - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/ProjectDetail/__tests__/__snapshots__/ProjectDetail-test.js.snap b/client/src/frontend/containers/ProjectDetail/__tests__/__snapshots__/ProjectDetail-test.js.snap deleted file mode 100644 index 3fd44536af..0000000000 --- a/client/src/frontend/containers/ProjectDetail/__tests__/__snapshots__/ProjectDetail-test.js.snap +++ /dev/null @@ -1,1588 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/ProjectDetail/ProjectDetail matches the snapshot 1`] = ` - - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> -
    -`; diff --git a/client/src/frontend/containers/ProjectResources/__tests__/ProjectResources-test.js b/client/src/frontend/containers/ProjectResources/__tests__/ProjectResources-test.js deleted file mode 100644 index 78a92e5ebe..0000000000 --- a/client/src/frontend/containers/ProjectResources/__tests__/ProjectResources-test.js +++ /dev/null @@ -1,14 +0,0 @@ -import ProjectResourcesContainer from "../"; -import { BreadcrumbsProvider } from "global/components/atomic/Breadcrumbs"; - -describe("frontend/containers/ProjectResources/ProjectResources", () => { - def("project", () => factory("project")); - def("root", () => ( - - - - )); - it("matches the snapshot", () => { - expect(mount($withApp($root))).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/ProjectResources/__tests__/__snapshots__/ProjectResources-test.js.snap b/client/src/frontend/containers/ProjectResources/__tests__/__snapshots__/ProjectResources-test.js.snap deleted file mode 100644 index bc9d22cbf7..0000000000 --- a/client/src/frontend/containers/ProjectResources/__tests__/__snapshots__/ProjectResources-test.js.snap +++ /dev/null @@ -1,2063 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/ProjectResources/ProjectResources matches the snapshot 1`] = ` - - - - - - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - > - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - titleOverride="glossary.resource_title_case_other | Rowan Test" - > - - - - - - - - - - - - -
    - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - resources={null} - /> -
    -
    -
    -
    -
    -
    -
    -`; diff --git a/client/src/frontend/containers/ResourceCollectionDetail/__tests__/ResourceCollectionDetail-test.js b/client/src/frontend/containers/ResourceCollectionDetail/__tests__/ResourceCollectionDetail-test.js deleted file mode 100644 index 823aad0f66..0000000000 --- a/client/src/frontend/containers/ResourceCollectionDetail/__tests__/ResourceCollectionDetail-test.js +++ /dev/null @@ -1,35 +0,0 @@ -import { ResourceCollectionDetailContainer } from "../"; - -describe("frontend/containers/ResourceCollectionDetail", () => { - def("settings", () => factory("settings")); - def("project", () => factory("project")); - def("resources", () => collectionFactory("resource")); - def("resourceCollection", () => factory("resourceCollection")); - def("meta", () => ({ pagination: fixtures.pagination() })); - def("mock", () => jest.fn()); - - def("root", () => ( - key} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/ResourceCollectionDetail/__tests__/__snapshots__/ResourceCollectionDetail-test.js.snap b/client/src/frontend/containers/ResourceCollectionDetail/__tests__/__snapshots__/ResourceCollectionDetail-test.js.snap deleted file mode 100644 index 7717df7fab..0000000000 --- a/client/src/frontend/containers/ResourceCollectionDetail/__tests__/__snapshots__/ResourceCollectionDetail-test.js.snap +++ /dev/null @@ -1,2906 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/ResourceCollectionDetail matches the snapshot 1`] = ` - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - /> - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - parentEntity={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - resourceCollection={ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "collectionResourcesCount": 0, - "createdAt": "2017-04-24T23:25:50.161Z", - "resourceKinds": Array [ - "image", - "video", - ], - "resourceTags": Array [ - "dog", - ], - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "thumbnailStyles": Object {}, - "title": "Rowan", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "avatarColor": "primary", - "avatarMeta": Object {}, - "avatarStyles": Object {}, - "coverStyles": Object {}, - "darkMode": false, - "description": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "descriptionFormatted": "The look in your eyes, I recognize it. You used to have it for me. I guess it's better to be lucky than good. Mr. Crusher, ready a collision course with the Borg ship. My oath is between Captain Kargan and myself. Your only concern is with how you obey my orders. Or do you prefer the rank of prisoner to that of lieutenant? That might've been one of the shortest assignments in the history of Starfleet. I'll alert the crew.", - "downloadCallToAction": "Download the greatest dog", - "hashtag": "cute_dog", - "heroStyles": Object {}, - "hideActivity": false, - "imageCreditsFormatted": "

    Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - "actionCallout", - ], - "makers": Array [ - "maker", - ], - "resources": Array [ - "resource", - ], - "texts": Array [ - "text", - ], - }, - "type": "projects", - }, - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - }, - "type": "resourceCollections", - } - } - resources={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-0", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-0", - "relationships": Object {}, - "type": "resources", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-1", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-1", - "relationships": Object {}, - "type": "resources", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-2", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-2", - "relationships": Object {}, - "type": "resources", - }, - ] - } - slideshowResources={ - Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-0", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-0", - "relationships": Object {}, - "type": "resources", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-1", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-1", - "relationships": Object {}, - "type": "resources", - }, - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-resource-2", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "resource-2", - "relationships": Object {}, - "type": "resources", - }, - ] - } - slideshowResourcesMeta={ - Object { - "pagination": Object { - "currentPage": 1, - "nextPage": 2, - "perPage": 1, - "prevPage": 0, - "totalCount": 2, - "totalPages": 2, - }, - } - } - /> -
    -`; diff --git a/client/src/frontend/containers/ResourceDetail/__tests__/ResourceDetail-test.js b/client/src/frontend/containers/ResourceDetail/__tests__/ResourceDetail-test.js deleted file mode 100644 index a3ab0e1906..0000000000 --- a/client/src/frontend/containers/ResourceDetail/__tests__/ResourceDetail-test.js +++ /dev/null @@ -1,22 +0,0 @@ -import { ResourceDetailContainer } from "../"; - -describe("frontend/containers/ResourceDetail/ResourceDetail", () => { - def("settings", () => factory("settings")); - def("project", () => factory("project")); - def("resource", () => factory("resource")); - - def("root", () => ( - key} - location={{pathname: '/projects/test/resource'}} - /> - )); - - it("matches the snapshot", () => { - expect(shallow($root)).toMatchSnapshot(); - }); -}); diff --git a/client/src/frontend/containers/ResourceDetail/__tests__/__snapshots__/ResourceDetail-test.js.snap b/client/src/frontend/containers/ResourceDetail/__tests__/__snapshots__/ResourceDetail-test.js.snap deleted file mode 100644 index ecddb09dcc..0000000000 --- a/client/src/frontend/containers/ResourceDetail/__tests__/__snapshots__/ResourceDetail-test.js.snap +++ /dev/null @@ -1,938 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`frontend/containers/ResourceDetail/ResourceDetail matches the snapshot 1`] = ` - - - - Rowan, The Dog

    ", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "restrictedAccessBody": "Test body", - "restrictedAccessHeading": "Test heading", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "subtitle": "World's Greatest Dog", - "title": "Rowan Test", - "titleFormatted": "Rowan Test", - "titlePlaintext": "Rowan Test", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "actionCallouts": Array [ - Object { - "attributes": Object { - "button": true, - "externalLink": true, - "kind": "link", - "location": "left", - "position": 1, - "title": "Start Reading", - "url": "https://github.com/ManifoldScholar/manifold", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "project": null, - }, - "type": "actionCallouts", - }, - ], - "makers": Array [ - Object { - "attributes": Object { - "avatarStyles": Object {}, - "firstName": "John", - "fullName": "John Milton", - "lastName": "Milton", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object {}, - "type": "maker", - }, - ], - "resources": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "attachmentStyles": Object { - "medium": null, - "mediumSquare": "original-image.mock", - "original": "original-image.mock", - }, - "captionFormatted": "World's Greatest Dog", - "createdAt": "2017-04-24T23:25:50.161Z", - "descriptionFormatted": "Black and white freckles", - "downloadable": true, - "kind": "image", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "projectSlug": "delegated-project-slug", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "tagList": Array [ - "dog", - "puppy", - "GOAT", - ], - "title": "Image", - "titleFormatted": "Image", - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "collectionResources": Array [], - }, - "type": "resources", - }, - ], - "texts": Array [ - Object { - "attributes": Object { - "abilities": Object { - "create": true, - "createEntitlements": true, - "createPermissions": true, - "createResourceCollections": true, - "createResources": true, - "createTexts": true, - "createTwitterQueries": true, - "delete": true, - "manageEntitlements": true, - "manageEvents": true, - "managePermissions": true, - "manageResourceCollections": true, - "manageResources": true, - "manageSocials": true, - "manageTexts": true, - "manageTwitterQueries": true, - "read": true, - "readDeleted": true, - "readDrafts": true, - "readLog": true, - "readSecrets": true, - "update": true, - "updateMakers": true, - }, - "coverStyles": Object {}, - "createdAt": "2017-04-24T23:25:50.161Z", - "creatorNames": "Andre3000, Big Boi", - "metadata": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataFormatted": Object { - "abstract": "some-value", - "archive": "some-value", - "archiveLocation": "some-value", - "archivePlace": "some-value", - "authority": "some-value", - "callNumber": "some-value", - "chapterNumber": "some-value", - "collectionNumber": "some-value", - "collectionTitle": "some-value", - "containerTitle": "some-value", - "dimensions": "some-value", - "edition": "some-value", - "event": "some-value", - "eventPlace": "some-value", - "isbn": "some-value", - "issn": "some-value", - "issue": "some-value", - "jurisdiction": "some-value", - "medium": "some-value", - "number": "some-value", - "numberOfPages": "some-value", - "numberOfVolumes": "some-value", - "originalPublisher": "some-value", - "originalPublisherPlace": "some-value", - "originalTitle": "some-value", - "pmcid": "some-value", - "pmid": "some-value", - "publisher": "some-value", - "publisherPlace": "some-value", - "reviewedTitle": "some-value", - "section": "some-value", - "version": "some-value", - "volume": "some-value", - "yearSuffix": "some-value", - }, - "metadataProperties": Array [ - "abstract", - "archive", - "archiveLocation", - "archivePlace", - "authority", - "callNumber", - "collectionTitle", - "containerTitle", - "dimensions", - "event", - "eventPlace", - "isbn", - "issn", - "jurisdiction", - "medium", - "originalPublisher", - "originalPublisherPlace", - "originalTitle", - "pmcid", - "pmid", - "publisher", - "publisherPlace", - "reviewedTitle", - "section", - "version", - "yearSuffix", - "chapterNumber", - "collectionNumber", - "edition", - "issue", - "number", - "numberOfPages", - "numberOfVolumes", - "volume", - ], - "publicationDate": "2001-12-04", - "published": true, - "rights": "All Rights Reserved", - "slug": "slug-AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "title": "Ain't No Thang", - "titleFormatted": "Ain't No Thang", - "titlePlaintext": "Ain't No Thang", - "toc": Array [ - Object { - "anchor": "cvi", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Cover", - }, - Object { - "anchor": "bk", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Title Page", - }, - Object { - "anchor": "cip", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Copyright Page", - }, - Object { - "anchor": "toc", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Contents", - }, - Object { - "anchor": "ch01", - "children": Array [ - Object { - "anchor": "ch01sec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 1", - }, - Object { - "anchor": "ch01sec02", - "children": Array [ - Object { - "anchor": "ch01sec01subsec01", - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2 Subsection 1", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1 Section 2", - }, - ], - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "label": "Chapter 1", - }, - ], - }, - "id": "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE", - "relationships": Object { - "category": "category", - "project": "project", - "stylesheets": Array [ - "stylesheet", - ], - }, - "type": "texts", - }, - ], - }, - "type": "projects", - } - } - /> - - -
    -`; diff --git a/client/src/frontend/containers/ResourceDetail/index.js b/client/src/frontend/containers/ResourceDetail/index.js index 740c99ed58..d1a455657e 100644 --- a/client/src/frontend/containers/ResourceDetail/index.js +++ b/client/src/frontend/containers/ResourceDetail/index.js @@ -174,6 +174,7 @@ export class ResourceDetailContainer extends PureComponent { - ); - } - - render() { - return this.icon; - } -} diff --git a/client/src/global/components/entity-thumbnail/index.js b/client/src/global/components/entity-thumbnail/index.js index 05a37d2501..de50d1b545 100644 --- a/client/src/global/components/entity-thumbnail/index.js +++ b/client/src/global/components/entity-thumbnail/index.js @@ -7,7 +7,6 @@ import Maker from "./Maker"; import User from "./User"; import Page from "./Page"; import Feature from "./Feature"; -import TwitterQuery from "./TwitterQuery"; import ReadingGroup from "./ReadingGroup"; import JournalVolume from "./JournalVolume"; import Asset from "./Asset"; @@ -22,7 +21,6 @@ export default { User, Page, Feature, - TwitterQuery, ReadingGroup, JournalVolume, Asset diff --git a/client/src/global/components/icon-computed/Social.js b/client/src/global/components/icon-computed/Social.js index 58e6270cb5..2abb8fd10b 100644 --- a/client/src/global/components/icon-computed/Social.js +++ b/client/src/global/components/icon-computed/Social.js @@ -15,12 +15,9 @@ export default class IconComputedSocial extends PureComponent { iconForValue(value) { const map = { - facebook: "socialFacebook32", email: "socialEmail32", - twitter: "socialTwitter32", slack: "socialSlack32", linkedIn: "socialLinkedIn32", - instagram: "socialInstagram32", github: "socialGithub32", google: "socialGoogle32" }; diff --git a/client/src/global/components/icon/32/SocialFacebook.js b/client/src/global/components/icon/32/SocialFacebook.js deleted file mode 100644 index c9f2aa0bb3..0000000000 --- a/client/src/global/components/icon/32/SocialFacebook.js +++ /dev/null @@ -1,81 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class SocialFacebook extends Component { - static propTypes = { - className: PropTypes.string, - size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - stroke: PropTypes.string, - fill: PropTypes.string, - svgProps: PropTypes.object - }; - - static defaultProps = { - className: "", - size: "inherit", - stroke: "currentColor", - fill: "currentColor", - svgProps: {} - }; - - get defaultHeight() { - return 32; - } - - get defaultWidth() { - return 32; - } - - get size() { - return this.props.size; - } - - get width() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultWidth; - return this.size; - } - - get height() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultHeight; - return this.size; - } - - get viewBox() { - return "0 0 32 32"; - } - - get classes() { - const { className } = this.props; - return classnames("manicon-svg", className); - } - - get fill() { - return this.props.fill; - } - - get stroke() { - return this.props.stroke; - } - - render() { - const baseSvgProps = { - xmlns: "http://www.w3.org/2000/svg", - className: this.classes, - width: this.width, - height: this.height, - viewBox: this.viewBox, - fill: this.fill - }; - - const svgProps = Object.assign(baseSvgProps, this.props.svgProps); - - return ( - - - - ); - } -} diff --git a/client/src/global/components/icon/32/SocialInstagram.js b/client/src/global/components/icon/32/SocialInstagram.js deleted file mode 100644 index 08d47cd7ac..0000000000 --- a/client/src/global/components/icon/32/SocialInstagram.js +++ /dev/null @@ -1,81 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class SocialInstagram extends Component { - static propTypes = { - className: PropTypes.string, - size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - stroke: PropTypes.string, - fill: PropTypes.string, - svgProps: PropTypes.object - }; - - static defaultProps = { - className: "", - size: "inherit", - stroke: "currentColor", - fill: "currentColor", - svgProps: {} - }; - - get defaultHeight() { - return 32; - } - - get defaultWidth() { - return 32; - } - - get size() { - return this.props.size; - } - - get width() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultWidth; - return this.size; - } - - get height() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultHeight; - return this.size; - } - - get viewBox() { - return "0 0 32 32"; - } - - get classes() { - const { className } = this.props; - return classnames("manicon-svg", className); - } - - get fill() { - return this.props.fill; - } - - get stroke() { - return this.props.stroke; - } - - render() { - const baseSvgProps = { - xmlns: "http://www.w3.org/2000/svg", - className: this.classes, - width: this.width, - height: this.height, - viewBox: this.viewBox, - fill: this.fill - }; - - const svgProps = Object.assign(baseSvgProps, this.props.svgProps); - - return ( - - - - ); - } -} diff --git a/client/src/global/components/icon/32/SocialTwitter.js b/client/src/global/components/icon/32/SocialTwitter.js deleted file mode 100644 index 0532265f1f..0000000000 --- a/client/src/global/components/icon/32/SocialTwitter.js +++ /dev/null @@ -1,81 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class SocialTwitter extends Component { - static propTypes = { - className: PropTypes.string, - size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - stroke: PropTypes.string, - fill: PropTypes.string, - svgProps: PropTypes.object - }; - - static defaultProps = { - className: "", - size: "inherit", - stroke: "currentColor", - fill: "currentColor", - svgProps: {} - }; - - get defaultHeight() { - return 32; - } - - get defaultWidth() { - return 32; - } - - get size() { - return this.props.size; - } - - get width() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultWidth; - return this.size; - } - - get height() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultHeight; - return this.size; - } - - get viewBox() { - return "0 0 32 32"; - } - - get classes() { - const { className } = this.props; - return classnames("manicon-svg", className); - } - - get fill() { - return this.props.fill; - } - - get stroke() { - return this.props.stroke; - } - - render() { - const baseSvgProps = { - xmlns: "http://www.w3.org/2000/svg", - className: this.classes, - width: this.width, - height: this.height, - viewBox: this.viewBox, - fill: this.fill - }; - - const svgProps = Object.assign(baseSvgProps, this.props.svgProps); - - return ( - - - - ); - } -} diff --git a/client/src/global/components/icon/64/ActivityTweet.js b/client/src/global/components/icon/64/ActivityTweet.js deleted file mode 100644 index 0631566dbb..0000000000 --- a/client/src/global/components/icon/64/ActivityTweet.js +++ /dev/null @@ -1,84 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class ActivityTweet extends Component { - static propTypes = { - className: PropTypes.string, - size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - stroke: PropTypes.string, - fill: PropTypes.string, - svgProps: PropTypes.object - }; - - static defaultProps = { - className: "", - size: "inherit", - stroke: "currentColor", - fill: "currentColor", - svgProps: {} - }; - - get defaultHeight() { - return 64; - } - - get defaultWidth() { - return 64; - } - - get size() { - return this.props.size; - } - - get width() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultWidth; - return this.size; - } - - get height() { - if (this.size === null || this.size === "inherit") return null; - if (this.size === "default") return this.defaultHeight; - return this.size; - } - - get viewBox() { - return "0 0 64 64"; - } - - get classes() { - const { className } = this.props; - return classnames("manicon-svg", className); - } - - get fill() { - return this.props.fill; - } - - get stroke() { - return this.props.stroke; - } - - render() { - const baseSvgProps = { - xmlns: "http://www.w3.org/2000/svg", - className: this.classes, - width: this.width, - height: this.height, - viewBox: this.viewBox, - fill: this.fill - }; - - const svgProps = Object.assign(baseSvgProps, this.props.svgProps); - - return ( - - - - ); - } -} diff --git a/client/src/global/components/icon/index.js b/client/src/global/components/icon/index.js index 50627b68f6..2581ae2cfe 100644 --- a/client/src/global/components/icon/index.js +++ b/client/src/global/components/icon/index.js @@ -2,7 +2,6 @@ import ActivityComments64 from "./64/ActivityComments"; import ActivityEgg64 from "./64/ActivityEgg"; import ActivityResource64 from "./64/ActivityResource"; import ActivityText64 from "./64/ActivityText"; -import ActivityTweet64 from "./64/ActivityTweet"; import Annotate24 from "./24/Annotate"; import Annotate32 from "./32/Annotate"; import AnnotationGroup24 from "./24/AnnotationGroup"; @@ -141,13 +140,10 @@ import Share24 from "./24/Share"; import Share32 from "./32/Share"; import SocialCite32 from "./32/SocialCite"; import SocialEmail32 from "./32/SocialEmail"; -import SocialFacebook32 from "./32/SocialFacebook"; import SocialGithub32 from "./32/SocialGithub"; import SocialGoogle32 from "./32/SocialGoogle"; -import SocialInstagram32 from "./32/SocialInstagram"; import SocialLinkedIn32 from "./32/SocialLinkedIn"; import SocialSlack32 from "./32/SocialSlack"; -import SocialTwitter32 from "./32/SocialTwitter"; import Speaker24 from "./24/Speaker"; import SpeakerMuted24 from "./24/SpeakerMuted"; import StarSquircle32 from "./32/StarSquircle"; @@ -192,7 +188,6 @@ export default { ActivityEgg64, ActivityResource64, ActivityText64, - ActivityTweet64, Annotate24, Annotate32, AnnotationGroup24, @@ -346,13 +341,10 @@ export default { Share32, SocialCite32, SocialEmail32, - SocialFacebook32, SocialGithub32, SocialGoogle32, - SocialInstagram32, SocialLinkedIn32, SocialSlack32, - SocialTwitter32, Speaker24, SpeakerMuted24, StarSquircle32, diff --git a/client/src/global/components/icon/svg/icon/32/social-instagram.svg b/client/src/global/components/icon/svg/icon/32/social-instagram.svg deleted file mode 100644 index 5b02bbd3f7..0000000000 --- a/client/src/global/components/icon/svg/icon/32/social-instagram.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/client/src/global/components/sign-in-up/oauth/OAuthLoginOptions/index.js b/client/src/global/components/sign-in-up/oauth/OAuthLoginOptions/index.js index 2465e326ff..86d0932a87 100644 --- a/client/src/global/components/sign-in-up/oauth/OAuthLoginOptions/index.js +++ b/client/src/global/components/sign-in-up/oauth/OAuthLoginOptions/index.js @@ -14,9 +14,7 @@ export default function OAuthLoginOptions() { return ( - - {customOAuthProviders.map(provider => ( ))} diff --git a/client/src/global/containers/CheckFrontendMode/index.js b/client/src/global/containers/CheckFrontendMode/index.js index 2f93f46ec2..31705bf7a9 100644 --- a/client/src/global/containers/CheckFrontendMode/index.js +++ b/client/src/global/containers/CheckFrontendMode/index.js @@ -46,7 +46,7 @@ class CheckFrontendMode extends PureComponent { get projectStandaloneMode() { if (!this.project) return "disabled"; - return this.project.attributes.standaloneMode; + return this.project.attributes?.standaloneMode; } get canShowStandalone() { diff --git a/client/src/helpers/router/navigation.js b/client/src/helpers/router/navigation.js index 2490c6a366..8bd35376e9 100644 --- a/client/src/helpers/router/navigation.js +++ b/client/src/helpers/router/navigation.js @@ -293,13 +293,6 @@ class Navigation { ability: "update", args }, - { - label: "titles.social", - route: "backendProjectSocial", - entity: project, - ability: "manageSocials", - args - }, { label: "titles.exports", route: "backendProjectExportations", diff --git a/client/src/hoc/withFilteredLists/eventFilters.js b/client/src/hoc/withFilteredLists/eventFilters.js index 6b0c155168..eb4d549632 100644 --- a/client/src/hoc/withFilteredLists/eventFilters.js +++ b/client/src/hoc/withFilteredLists/eventFilters.js @@ -3,10 +3,7 @@ const EVENT_TYPES = { project_created: "Project Created", text_added: "Text Added", - text_annotated: "Text Annotated", - resource_added: "Resource Added", - comment_created: "Comment Created", - tweet: "Tweet" + resource_added: "Resource Added" }; export default function eventFilters({ snapshotState = false } = {}) { diff --git a/client/src/hooks/index.js b/client/src/hooks/index.js index bf56281113..46b361536d 100644 --- a/client/src/hooks/index.js +++ b/client/src/hooks/index.js @@ -30,3 +30,6 @@ export { default as useConfirmation } from "./useConfirmation"; export { default as useShowJournalsActive } from "./useShowJournalsActive"; export { default as useRedirectToFirstMatch } from "./useRedirectToFirstMatch"; + +export { default as useShare } from "./useShare"; +export { default as useCopyLinkToSelection } from "./useCopyLinkToSelection"; diff --git a/client/src/hooks/useCopyLinkToSelection.js b/client/src/hooks/useCopyLinkToSelection.js new file mode 100644 index 0000000000..585d4ecf30 --- /dev/null +++ b/client/src/hooks/useCopyLinkToSelection.js @@ -0,0 +1,68 @@ +import { useState, useEffect, useCallback } from "react"; +import { useTranslation } from "react-i18next"; +import lh from "helpers/linkHandler"; + +export const urlWithTextFragment = (url, fragment) => { + const prefix = fragment.prefix + ? `${encodeURIComponent(fragment.prefix)}-,` + : ""; + const suffix = fragment.suffix + ? `,-${encodeURIComponent(fragment.suffix)}` + : ""; + const start = encodeURIComponent(fragment.textStart); + const end = fragment.textEnd + ? `,${encodeURIComponent(fragment.textEnd)}` + : ""; + + return `${url}#:~:text=${prefix}${start}${end}${suffix}`; +}; + +export default function useCopyLinkToSelection(text, section, urlTextFragment) { + const { t } = useTranslation(); + + const getBaseUrl = useCallback(() => { + if (typeof window === "undefined") return null; + const readerUrl = lh.link( + "readerSection", + text.attributes.slug, + section.id + ); + return `${window.location.origin}${readerUrl}`; + }, [text, section]); + + const generateUrl = useCallback(() => { + const url = getBaseUrl(); + if (!url) return null; + + const { status, fragment } = urlTextFragment ?? {}; + + if (status === 0) { + return urlWithTextFragment(url, fragment); + } + + return url; + }, [urlTextFragment, getBaseUrl]); + + const [copied, setCopied] = useState(false); + + useEffect(() => { + if (copied) { + window.setTimeout(() => setCopied(false), 1500); + } + }, [copied]); + + /* eslint-disable */ + const onClick = () => { + const href = generateUrl(); + navigator?.clipboard.writeText(href).then(() => setCopied(true)); + }; + /* eslint-enable */ + + const icon = copied ? "checkmark16" : "RTELink24"; + const label = copied ? t("actions.copied") : t("reader.menus.popup.copy"); + const srLabel = copied + ? t("actions.copied") + : t("reader.menus.popup.copy_selection"); + + return { onClick, icon, label, srLabel }; +} diff --git a/client/src/hooks/useShare.js b/client/src/hooks/useShare.js new file mode 100644 index 0000000000..555f96a03e --- /dev/null +++ b/client/src/hooks/useShare.js @@ -0,0 +1,96 @@ +import React, { useState, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { urlWithTextFragment } from "./useCopyLinkToSelection"; +import useFromStore from "./useFromStore"; + +export default function useShare(title, urlTextFragment, shareOnly = false) { + const { t } = useTranslation(); + + const [copied, setCopied] = useState(false); + const [isMounted, setIsMounted] = useState(false); + + useEffect(() => { + setIsMounted(true); + }, []); + + useEffect(() => { + if (copied) { + window.setTimeout(() => setCopied(false), 1500); + } + }, [copied]); + + const settings = useFromStore("settings", "select"); + + if (!isMounted) + return { + canRender: true, + disabled: true, + icon: "share24", + label: t("actions.share") + }; + + const headTitle = settings?.attributes.general.headTitle; + + const appendedTitle = headTitle ? `${title} | ${headTitle}` : title; + + const baseUrl = window.location.toString(); + const { status, fragment } = urlTextFragment ?? {}; + const url = status === 0 ? urlWithTextFragment(baseUrl, fragment) : baseUrl; + + const shareData = { title: appendedTitle, url }; + + /* eslint-disable */ + const onShare = async () => { + try { + await navigator.share(shareData); + } catch (err) { + console.error(err); + return { err }; + } + }; + + const onCopy = () => { + navigator?.clipboard.writeText(url).then(() => setCopied(true)); + }; + /* eslint-enable */ + + const shareSupported = + typeof navigator?.canShare === "function" && navigator.canShare(shareData); + + if (shareOnly) + return { + canRender: shareSupported, + onClick: onShare, + icon: "share24", + label: t("actions.share") + }; + + const clipboardSupported = navigator?.clipboard; + + const canRender = !!(shareSupported || clipboardSupported); + + /* eslint-disable no-nested-ternary */ + const icon = shareSupported + ? "share24" + : copied + ? "checkmark16" + : "RTELink24"; + const label = shareSupported + ? t("actions.share") + : copied + ? t("actions.copied") + : t("actions.copy"); + const srLabel = shareSupported + ? t("actions.share") + : copied + ? t("actions.copy_link_to", { title }) + : t("actions.share_title", { title }); + + return { + canRender, + onClick: shareSupported ? onShare : onCopy, + icon, + label, + srLabel + }; +} diff --git a/client/src/reader/components/annotation/popup/hooks/index.js b/client/src/reader/components/annotation/popup/hooks/index.js index 284c0b414d..c31bbfcc22 100644 --- a/client/src/reader/components/annotation/popup/hooks/index.js +++ b/client/src/reader/components/annotation/popup/hooks/index.js @@ -1,2 +1 @@ export { default as useAnnotationMenu } from "./useAnnotationMenu"; -export { default as useShareAnnotation } from "./useShareAnnotation"; diff --git a/client/src/reader/components/annotation/popup/hooks/useShareAnnotation/index.js b/client/src/reader/components/annotation/popup/hooks/useShareAnnotation/index.js deleted file mode 100644 index 6b5d1aa8ac..0000000000 --- a/client/src/reader/components/annotation/popup/hooks/useShareAnnotation/index.js +++ /dev/null @@ -1,74 +0,0 @@ -import { useCallback } from "react"; -import trim from "lodash/trim"; -import qs from "query-string"; -import lh from "helpers/linkHandler"; -import { useFromStore } from "hooks"; - -const DEFAULT_WINDOW_OPTIONS = ["", "", "width=600,height=300"]; - -function buildURI(base, params) { - return `${base}?${qs.stringify(params)}`; -} - -export default function useShareAnnotation({ - text, - section, - selectionState, - windowOptions = DEFAULT_WINDOW_OPTIONS -}) { - const settings = useFromStore("settings", "select"); - const facebookAppId = settings.attributes.integrations.facebookAppId; - - function getNodeUrl() { - if (typeof window === "undefined") return null; - const readerUrl = lh.link( - "readerSection", - text.attributes.slug, - section.id - ); - const url = `${window.location.hostname}${readerUrl}`; - const node = selectionState?.selection?.startNode?.dataset.nodeUuid; - if (!node) return url; - return `${url}#node-${node}`; - } - - function getMessage() { - if (!selectionState?.selection) return null; - const selectedText = trim(selectionState.selection.text); - if (selectedText.length === 0) { - return `Read “${selectedText.attributes.titlePlaintext}” on Manifold:`; - } - return `“${selectionState.selection.text}” from Manifold:`; - } - - function share(url) { - const options = windowOptions.join(","); - window.open(url, "_blank", options); - } - - const shareOnTwitter = useCallback(() => { - const nodeUrl = getNodeUrl(); - const message = getMessage(); - const params = { - text: !message || message === "" ? nodeUrl : `${message} ${nodeUrl}` - }; - const shareUrl = buildURI("https://twitter.com/intent/tweet", params); - share(shareUrl); - }, []); // eslint-disable-line react-hooks/exhaustive-deps - - const shareOnFacebook = useCallback(() => { - const nodeUrl = getNodeUrl(); - const message = getMessage(); - const params = { - app_id: facebookAppId, - display: "popup", - caption: message, - link: nodeUrl, - redirect_uri: "https://www.facebook.com" - }; - const shareUrl = buildURI("https://www.facebook.com/dialog/feed", params); - share(shareUrl); - }, [facebookAppId]); // eslint-disable-line react-hooks/exhaustive-deps - - return { facebookAppId, shareOnTwitter, shareOnFacebook }; -} diff --git a/client/src/reader/components/annotation/popup/menus/Share.js b/client/src/reader/components/annotation/popup/menus/Share.js index c2a66f3910..4008c86670 100644 --- a/client/src/reader/components/annotation/popup/menus/Share.js +++ b/client/src/reader/components/annotation/popup/menus/Share.js @@ -2,8 +2,7 @@ import React from "react"; import PropTypes from "prop-types"; import Menu from "../parts/Menu"; import MenuItem from "../parts/MenuItem"; -import { useShareAnnotation } from "../hooks"; -import { useEventTracker } from "hooks"; +import { useEventTracker, useShare, useCopyLinkToSelection } from "hooks"; import { t } from "i18next"; function ShareMenu({ @@ -15,13 +14,9 @@ function ShareMenu({ selectionState, actions, onBackClick, - onKeyDown + onKeyDown, + metaTitle }) { - const { - facebookAppId, - shareOnTwitter, - shareOnFacebook - } = useShareAnnotation({ text, section, selectionState }); const trackEvent = useEventTracker(); const canCite = section && !!Object.keys(section.attributes.citations).length; @@ -31,10 +26,28 @@ function ShareMenu({ actions.openCitationDrawer(); } - function trackSocialEvent() { + function trackShareEvent() { trackEvent("share", section.type, section.id); } + const { onClick: onShareClick, canRender: canShare } = useShare( + metaTitle ?? section.attributes.name, + selectionState.textFragment, + true + ); + + const handleShareClick = async () => { + const { err } = (await onShareClick()) ?? {}; + if (!err) trackShareEvent(); + }; + + const { + onClick: onCopyClick, + label: copyLabel, + icon: copyIcon, + srLabel: copySrLabel + } = useCopyLinkToSelection(text, section, selectionState.textFragment); + return ( )} - { - shareOnTwitter(); - trackSocialEvent(); - }} - kind="any" - icon="socialTwitter32" - label="Twitter" - srLabel={t("external_links.share_on_social", { service: "Twitter" })} - /> - {facebookAppId && ( + {canShare && ( { - shareOnFacebook(); - trackSocialEvent(); - }} + onClick={handleShareClick} kind="any" - icon="socialFacebook32" - label="Facebook" - srLabel={t("external_links.share_on_social", { service: "Facebook" })} + label={t("reader.menus.popup.app_share")} + srLabel={t("reader.menus.popup.share_selection")} + icon="link24" /> )} + (
    {this.renderRoutes()} - +
    { + timeoutDurationMs = newTimeoutDurationMs; +}; + +/** + * Enum indicating the success, or failure reason, of generateFragment. + */ +export const GenerateFragmentStatus = { + SUCCESS: 0, // A fragment was generated. + INVALID_SELECTION: 1, // The selection provided could not be used. + AMBIGUOUS: 2, // No unique fragment could be identified for this selection. + TIMEOUT: 3, // Computation could not complete in time. + EXECUTION_FAILED: 4 // An exception was raised during generation. +}; + +/** + * @typedef {Object} GenerateFragmentResult + * @property {GenerateFragmentStatus} status + * @property {TextFragment} [fragment] + */ + +/** + * Attempts to generate a fragment, suitable for formatting and including in a + * URL, which will highlight the given selection upon opening. + * @param {Selection} selection - a Selection object, the result of + * window.getSelection + * @param {Date} [startTime] - the time when generation began, for timeout + * purposes. Defaults to current timestamp. + * @return {GenerateFragmentResult} + */ +export const generateFragment = (selection, startTime = Date.now()) => { + return doGenerateFragment(selection, startTime); +}; + +/** + * Attampts to generate a fragment using a given range. @see {@link generateFragment} + * + * @param {Range} range + * @param {Date} [startTime] - the time when generation began, for timeout + * purposes. Defaults to current timestamp. + * @return {GenerateFragmentResult} + */ +export const generateFragmentFromRange = (range, startTime = Date.now()) => { + try { + return doGenerateFragmentFromRange(range, startTime); + } catch (err) { + if (err.isTimeout) { + return { status: GenerateFragmentStatus.TIMEOUT }; + } else { + return { status: GenerateFragmentStatus.EXECUTION_FAILED }; + } + } +}; + +/** + * Checks whether fragment generation can be attempted for a given range. This + * checks a handful of simple conditions: the range must be nonempty, not inside + * an , etc. A true return is not a guarantee that fragment generation + * will succeed; instead, this is a way to quickly rule out generation in cases + * where a failure is predictable. + * @param {Range} range + * @return {boolean} - true if fragment generation may proceed; false otherwise. + */ +export const isValidRangeForFragmentGeneration = range => { + // Check that the range isn't just punctuation and whitespace. Only check the + // first |TRUNCATE_RANGE_CHECK_CHARS| to put an upper bound on runtime; ranges + // that start with (e.g.) thousands of periods should be rare. + // This also implicitly ensures the selection isn't in an input or textarea + // field, as document.selection contains an empty range in these cases. + if ( + !range + .toString() + .substring(0, TRUNCATE_RANGE_CHECK_CHARS) + .match(fragments.internal.NON_BOUNDARY_CHARS) + ) { + return false; + } + + // Check for iframe + try { + if (range.startContainer.ownerDocument.defaultView !== window.top) { + return false; + } + } catch { + // If accessing window.top throws an error, this is in a cross-origin + // iframe. + return false; + } + + // Walk up the DOM to ensure that the range isn't inside an editable. Limit + // the search depth to |MAX_DEPTH| to constrain runtime. + let node = range.commonAncestorContainer; + let numIterations = 0; + while (node) { + if (node.nodeType == Node.ELEMENT_NODE) { + if (["TEXTAREA", "INPUT"].includes(node.tagName.toUpperCase())) { + return false; + } + + const editable = node.attributes.getNamedItem("contenteditable"); + if (editable && editable.value !== "false") { + return false; + } + + // Cap the number of iterations at |MAX_PRECONDITION_DEPTH| to put an + // upper bound on runtime. + numIterations++; + if (numIterations >= MAX_DEPTH) { + return false; + } + } + node = node.parentNode; + } + + return true; +}; + +/** + * @param {Selection} selection + * @param {Date} startTime + * @return {GenerateFragmentResult} + * @see {@link generateFragment} - this method wraps the error-throwing portions + * of that method. + * @throws {Error} - Will throw if computation takes longer than the accepted + * timeout length. + */ +const doGenerateFragment = (selection, startTime) => { + let range; + try { + range = selection.getRangeAt(0); + } catch { + return { status: GenerateFragmentStatus.INVALID_SELECTION }; + } + + return doGenerateFragmentFromRange(range, startTime); +}; +/** + * @param {Range} range + * @param {Date} startTime + * @return {GenerateFragmentResult} + * @see {@link doGenerateFragment} + */ +const doGenerateFragmentFromRange = (range, startTime) => { + recordStartTime(startTime); + expandRangeStartToWordBound(range); + expandRangeEndToWordBound(range); + // Keep a copy of the range before we try to shrink it to make it start and + // end in text nodes. We need to use the range edges as starting points + // for context term building, so it makes sense to start from the original + // edges instead of the edges after shrinking. This way we don't have to + // traverse all the non-text nodes that are between the edges after shrinking + // and the original ones. + const rangeBeforeShrinking = range.cloneRange(); + + moveRangeEdgesToTextNodes(range); + + if (range.collapsed) { + return { status: GenerateFragmentStatus.INVALID_SELECTION }; + } + + let factory; + + if (canUseExactMatch(range)) { + const exactText = fragments.internal.normalizeString(range.toString()); + const fragment = { + textStart: exactText + }; + // If the exact text is long enough to be used on its own, try this and skip + // the longer process below. + if ( + exactText.length >= MIN_LENGTH_WITHOUT_CONTEXT && + isUniquelyIdentifying(fragment) + ) { + return { + status: GenerateFragmentStatus.SUCCESS, + fragment: fragment + }; + } + + factory = new FragmentFactory().setExactTextMatch(exactText); + } else { + // We have to use textStart and textEnd to identify a range. First, break + // the range up based on block boundaries, as textStart/textEnd can't cross + // these. + const startSearchSpace = getSearchSpaceForStart(range); + const endSearchSpace = getSearchSpaceForEnd(range); + + if (startSearchSpace && endSearchSpace) { + // If the search spaces are truthy, then there's a block boundary between + // them. + factory = new FragmentFactory().setStartAndEndSearchSpace( + startSearchSpace, + endSearchSpace + ); + } else { + // If the search space was empty/undefined, it's because no block boundary + // was found. That means textStart and textEnd *share* a search space, so + // our approach must ensure the substrings chosen as candidates don't + // overlap. + factory = new FragmentFactory().setSharedSearchSpace( + range.toString().trim() + ); + } + } + + const prefixRange = document.createRange(); + prefixRange.selectNodeContents(document.body); + const suffixRange = prefixRange.cloneRange(); + + prefixRange.setEnd( + rangeBeforeShrinking.startContainer, + rangeBeforeShrinking.startOffset + ); + suffixRange.setStart( + rangeBeforeShrinking.endContainer, + rangeBeforeShrinking.endOffset + ); + + const prefixSearchSpace = getSearchSpaceForEnd(prefixRange); + const suffixSearchSpace = getSearchSpaceForStart(suffixRange); + + if (prefixSearchSpace || suffixSearchSpace) { + factory.setPrefixAndSuffixSearchSpace(prefixSearchSpace, suffixSearchSpace); + } + + factory.useSegmenter(fragments.internal.makeNewSegmenter()); + + let didEmbiggen = false; + do { + checkTimeout(); + didEmbiggen = factory.embiggen(); + const fragment = factory.tryToMakeUniqueFragment(); + if (fragment != null) { + return { + status: GenerateFragmentStatus.SUCCESS, + fragment: fragment + }; + } + } while (didEmbiggen); + + return { status: GenerateFragmentStatus.AMBIGUOUS }; +}; + +/** + * @throws {Error} - if the timeout duration has been exceeded, an error will + * be thrown so that execution can be halted. + */ +const checkTimeout = () => { + // disable check when no timeout duration specified + if (timeoutDurationMs === null) { + return; + } + const delta = Date.now() - t0; + if (delta > timeoutDurationMs) { + const timeoutError = new Error( + `Fragment generation timed out after ${delta} ms.` + ); + timeoutError.isTimeout = true; + throw timeoutError; + } +}; + +/** + * Call at the start of fragment generation to set the baseline for timeout + * checking. + * @param {Date} newStartTime - the timestamp when fragment generation began + */ +const recordStartTime = newStartTime => { + t0 = newStartTime; +}; + +/** + * Finds the search space for parameters when using range or suffix match. + * This is the text from the start of the range to the first block boundary, + * trimmed to remove any leading/trailing whitespace characters. + * @param {Range} range - the range which will be highlighted. + * @return {String|Undefined} - the text which may be used for constructing a + * textStart parameter identifying this range. Will return undefined if no + * block boundaries are found inside this range, or if all the candidate + * ranges were empty (or included only whitespace characters). + */ +const getSearchSpaceForStart = range => { + let node = getFirstNodeForBlockSearch(range); + const walker = makeWalkerForNode(node, range.endContainer); + if (!walker) { + return undefined; + } + + const finishedSubtrees = new Set(); + // If the range starts after the last child of an element node + // don't visit its subtree because it's not included in the range. + if ( + range.startContainer.nodeType === Node.ELEMENT_NODE && + range.startOffset === range.startContainer.childNodes.length + ) { + finishedSubtrees.add(range.startContainer); + } + const origin = node; + const textAccumulator = new BlockTextAccumulator(range, true); + // tempRange monitors whether we've exhausted our search space yet. + const tempRange = range.cloneRange(); + while (!tempRange.collapsed && node != null) { + checkTimeout(); + // Depending on whether |node| is an ancestor of the start of our + // search, we use either its leading or trailing edge as our start. + if (node.contains(origin)) { + tempRange.setStartAfter(node); + } else { + tempRange.setStartBefore(node); + } + // Add node to accumulator to keep track of text inside the current block + // boundaries + textAccumulator.appendNode(node); + + // If the accumulator found a non empty block boundary we've got our search + // space. + if (textAccumulator.textInBlock !== null) { + return textAccumulator.textInBlock; + } + node = fragments.internal.forwardTraverse(walker, finishedSubtrees); + } + return undefined; +}; + +/** + * Finds the search space for parameters when using range or prefix match. + * This is the text from the last block boundary to the end of the range, + * trimmed to remove any leading/trailing whitespace characters. + * @param {Range} range - the range which will be highlighted. + * @return {String|Undefined} - the text which may be used for constructing a + * textEnd parameter identifying this range. Will return undefined if no + * block boundaries are found inside this range, or if all the candidate + * ranges were empty (or included only whitespace characters). + */ +const getSearchSpaceForEnd = range => { + let node = getLastNodeForBlockSearch(range); + const walker = makeWalkerForNode(node, range.startContainer); + if (!walker) { + return undefined; + } + const finishedSubtrees = new Set(); + // If the range ends before the first child of an element node + // don't visit its subtree because it's not included in the range. + if ( + range.endContainer.nodeType === Node.ELEMENT_NODE && + range.endOffset === 0 + ) { + finishedSubtrees.add(range.endContainer); + } + + const origin = node; + const textAccumulator = new BlockTextAccumulator(range, false); + + // tempRange monitors whether we've exhausted our search space yet. + const tempRange = range.cloneRange(); + while (!tempRange.collapsed && node != null) { + checkTimeout(); + // Depending on whether |node| is an ancestor of the start of our + // search, we use either its leading or trailing edge as our end. + if (node.contains(origin)) { + tempRange.setEnd(node, 0); + } else { + tempRange.setEndAfter(node); + } + + // Add node to accumulator to keep track of text inside the current block + // boundaries. + textAccumulator.appendNode(node); + + // If the accumulator found a non empty block boundary we've got our search + // space. + if (textAccumulator.textInBlock !== null) { + return textAccumulator.textInBlock; + } + + node = fragments.internal.backwardTraverse(walker, finishedSubtrees); + } + return undefined; +}; + +/** + * Helper class for constructing range-based fragments for selections that cross + * block boundaries. + */ +const FragmentFactory = class { + /** + * Initializes the basic state of the factory. Users should then call exactly + * one of setStartAndEndSearchSpace, setSharedSearchSpace, or + * setExactTextMatch, and optionally setPrefixAndSuffixSearchSpace. + */ + constructor() { + this.Mode = { + ALL_PARTS: 1, + SHARED_START_AND_END: 2, + CONTEXT_ONLY: 3 + }; + + this.startOffset = null; + this.endOffset = null; + this.prefixOffset = null; + this.suffixOffset = null; + + this.prefixSearchSpace = ""; + this.backwardsPrefixSearchSpace = ""; + this.suffixSearchSpace = ""; + + this.numIterations = 0; + } + + /** + * Generates a fragment based on the current state, then tests it for + * uniqueness. + * @return {TextFragment|Undefined} - a text fragment if the current state is + * uniquely identifying, or undefined if the current state is ambiguous. + */ + tryToMakeUniqueFragment() { + let fragment; + if (this.mode === this.Mode.CONTEXT_ONLY) { + fragment = { textStart: this.exactTextMatch }; + } else { + fragment = { + textStart: this.getStartSearchSpace() + .substring(0, this.startOffset) + .trim(), + textEnd: this.getEndSearchSpace() + .substring(this.endOffset) + .trim() + }; + } + if (this.prefixOffset != null) { + const prefix = this.getPrefixSearchSpace() + .substring(this.prefixOffset) + .trim(); + if (prefix) { + fragment.prefix = prefix; + } + } + if (this.suffixOffset != null) { + const suffix = this.getSuffixSearchSpace() + .substring(0, this.suffixOffset) + .trim(); + if (suffix) { + fragment.suffix = suffix; + } + } + return isUniquelyIdentifying(fragment) ? fragment : undefined; + } + + /** + * Shifts the current state such that the candidates for textStart and textEnd + * represent more of the possible search spaces. + * @return {boolean} - true if the desired expansion occurred; false if the + * entire search space has been consumed and no further attempts can be + * made. + */ + embiggen() { + let canExpandRange = true; + + if (this.mode === this.Mode.SHARED_START_AND_END) { + if (this.startOffset >= this.endOffset) { + // If the search space is shared between textStart and textEnd, then + // stop expanding when textStart overlaps textEnd. + canExpandRange = false; + } + } else if (this.mode === this.Mode.ALL_PARTS) { + // Stop expanding if both start and end have already consumed their full + // search spaces. + if ( + this.startOffset === this.getStartSearchSpace().length && + this.backwardsEndOffset() === this.getEndSearchSpace().length + ) { + canExpandRange = false; + } + } else if (this.mode === this.Mode.CONTEXT_ONLY) { + canExpandRange = false; + } + + if (canExpandRange) { + const desiredIterations = this.getNumberOfRangeWordsToAdd(); + if (this.startOffset < this.getStartSearchSpace().length) { + let i = 0; + if (this.getStartSegments() != null) { + while ( + i < desiredIterations && + this.startOffset < this.getStartSearchSpace().length + ) { + this.startOffset = this.getNextOffsetForwards( + this.getStartSegments(), + this.startOffset, + this.getStartSearchSpace() + ); + i++; + } + } else { + // We don't have a segmenter, so find the next boundary character + // instead. Shift to the next boundary char, and repeat until we've + // added a word char. + let oldStartOffset = this.startOffset; + do { + checkTimeout(); + const newStartOffset = this.getStartSearchSpace() + .substring(this.startOffset + 1) + .search(fragments.internal.BOUNDARY_CHARS); + if (newStartOffset === -1) { + this.startOffset = this.getStartSearchSpace().length; + } else { + this.startOffset = this.startOffset + 1 + newStartOffset; + } + // Only count as an iteration if a word character was added. + if ( + this.getStartSearchSpace() + .substring(oldStartOffset, this.startOffset) + .search(fragments.internal.NON_BOUNDARY_CHARS) !== -1 + ) { + oldStartOffset = this.startOffset; + i++; + } + } while ( + this.startOffset < this.getStartSearchSpace().length && + i < desiredIterations + ); + } + + // Ensure we don't have overlapping start and end offsets. + if (this.mode === this.Mode.SHARED_START_AND_END) { + this.startOffset = Math.min(this.startOffset, this.endOffset); + } + } + + if (this.backwardsEndOffset() < this.getEndSearchSpace().length) { + let i = 0; + if (this.getEndSegments() != null) { + while (i < desiredIterations && this.endOffset > 0) { + this.endOffset = this.getNextOffsetBackwards( + this.getEndSegments(), + this.endOffset + ); + i++; + } + } else { + // No segmenter, so shift to the next boundary char, and repeat until + // we've added a word char. + let oldBackwardsEndOffset = this.backwardsEndOffset(); + do { + checkTimeout(); + const newBackwardsOffset = this.getBackwardsEndSearchSpace() + .substring(this.backwardsEndOffset() + 1) + .search(fragments.internal.BOUNDARY_CHARS); + if (newBackwardsOffset === -1) { + this.setBackwardsEndOffset(this.getEndSearchSpace().length); + } else { + this.setBackwardsEndOffset( + this.backwardsEndOffset() + 1 + newBackwardsOffset + ); + } + // Only count as an iteration if a word character was added. + if ( + this.getBackwardsEndSearchSpace() + .substring(oldBackwardsEndOffset, this.backwardsEndOffset()) + .search(fragments.internal.NON_BOUNDARY_CHARS) !== -1 + ) { + oldBackwardsEndOffset = this.backwardsEndOffset(); + i++; + } + } while ( + this.backwardsEndOffset() < this.getEndSearchSpace().length && + i < desiredIterations + ); + } + // Ensure we don't have overlapping start and end offsets. + if (this.mode === this.Mode.SHARED_START_AND_END) { + this.endOffset = Math.max(this.startOffset, this.endOffset); + } + } + } + + let canExpandContext = false; + if ( + !canExpandRange || + this.startOffset + this.backwardsEndOffset() < + MIN_LENGTH_WITHOUT_CONTEXT || + this.numIterations >= ITERATIONS_BEFORE_ADDING_CONTEXT + ) { + // Check if there's any unused search space left. + if ( + (this.backwardsPrefixOffset() != null && + this.backwardsPrefixOffset() !== + this.getPrefixSearchSpace().length) || + (this.suffixOffset != null && + this.suffixOffset !== this.getSuffixSearchSpace().length) + ) { + canExpandContext = true; + } + } + + if (canExpandContext) { + const desiredIterations = this.getNumberOfContextWordsToAdd(); + if (this.backwardsPrefixOffset() < this.getPrefixSearchSpace().length) { + let i = 0; + if (this.getPrefixSegments() != null) { + while (i < desiredIterations && this.prefixOffset > 0) { + this.prefixOffset = this.getNextOffsetBackwards( + this.getPrefixSegments(), + this.prefixOffset + ); + i++; + } + } else { + // Shift to the next boundary char, and repeat until we've added a + // word char. + let oldBackwardsPrefixOffset = this.backwardsPrefixOffset(); + do { + checkTimeout(); + const newBackwardsPrefixOffset = this.getBackwardsPrefixSearchSpace() + .substring(this.backwardsPrefixOffset() + 1) + .search(fragments.internal.BOUNDARY_CHARS); + if (newBackwardsPrefixOffset === -1) { + this.setBackwardsPrefixOffset( + this.getBackwardsPrefixSearchSpace().length + ); + } else { + this.setBackwardsPrefixOffset( + this.backwardsPrefixOffset() + 1 + newBackwardsPrefixOffset + ); + } + // Only count as an iteration if a word character was added. + if ( + this.getBackwardsPrefixSearchSpace() + .substring( + oldBackwardsPrefixOffset, + this.backwardsPrefixOffset() + ) + .search(fragments.internal.NON_BOUNDARY_CHARS) !== -1 + ) { + oldBackwardsPrefixOffset = this.backwardsPrefixOffset(); + i++; + } + } while ( + this.backwardsPrefixOffset() < this.getPrefixSearchSpace().length && + i < desiredIterations + ); + } + } + if (this.suffixOffset < this.getSuffixSearchSpace().length) { + let i = 0; + if (this.getSuffixSegments() != null) { + while ( + i < desiredIterations && + this.suffixOffset < this.getSuffixSearchSpace().length + ) { + this.suffixOffset = this.getNextOffsetForwards( + this.getSuffixSegments(), + this.suffixOffset, + this.getSuffixSearchSpace() + ); + i++; + } + } else { + let oldSuffixOffset = this.suffixOffset; + do { + checkTimeout(); + const newSuffixOffset = this.getSuffixSearchSpace() + .substring(this.suffixOffset + 1) + .search(fragments.internal.BOUNDARY_CHARS); + if (newSuffixOffset === -1) { + this.suffixOffset = this.getSuffixSearchSpace().length; + } else { + this.suffixOffset = this.suffixOffset + 1 + newSuffixOffset; + } + // Only count as an iteration if a word character was added. + if ( + this.getSuffixSearchSpace() + .substring(oldSuffixOffset, this.suffixOffset) + .search(fragments.internal.NON_BOUNDARY_CHARS) !== -1 + ) { + oldSuffixOffset = this.suffixOffset; + i++; + } + } while ( + this.suffixOffset < this.getSuffixSearchSpace().length && + i < desiredIterations + ); + } + } + } + this.numIterations++; + + // TODO: check if this exceeds the total length limit + return canExpandRange || canExpandContext; + } + + /** + * Sets up the factory for a range-based match with a highlight that crosses + * block boundaries. + * + * Exactly one of this, setSharedSearchSpace, or setExactTextMatch should be + * called so the factory can identify the fragment. + * + * @param {String} startSearchSpace - the maximum possible string which can be + * used to identify the start of the fragment + * @param {String} endSearchSpace - the maximum possible string which can be + * used to identify the end of the fragment + * @return {FragmentFactory} - returns |this| to allow call chaining and + * assignment + */ + setStartAndEndSearchSpace(startSearchSpace, endSearchSpace) { + this.startSearchSpace = startSearchSpace; + this.endSearchSpace = endSearchSpace; + this.backwardsEndSearchSpace = reverseString(endSearchSpace); + + this.startOffset = 0; + this.endOffset = endSearchSpace.length; + + this.mode = this.Mode.ALL_PARTS; + return this; + } + + /** + * Sets up the factory for a range-based match with a highlight that doesn't + * cross block boundaries. + * + * Exactly one of this, setStartAndEndSearchSpace, or setExactTextMatch should + * be called so the factory can identify the fragment. + * + * @param {String} sharedSearchSpace - the full text of the highlight + * @return {FragmentFactory} - returns |this| to allow call chaining and + * assignment + */ + setSharedSearchSpace(sharedSearchSpace) { + this.sharedSearchSpace = sharedSearchSpace; + this.backwardsSharedSearchSpace = reverseString(sharedSearchSpace); + + this.startOffset = 0; + this.endOffset = sharedSearchSpace.length; + + this.mode = this.Mode.SHARED_START_AND_END; + return this; + } + + /** + * Sets up the factory for an exact text match. + * + * Exactly one of this, setStartAndEndSearchSpace, or setSharedSearchSpace + * should be called so the factory can identify the fragment. + * + * @param {String} exactTextMatch - the full text of the highlight + * @return {FragmentFactory} - returns |this| to allow call chaining and + * assignment + */ + setExactTextMatch(exactTextMatch) { + this.exactTextMatch = exactTextMatch; + + this.mode = this.Mode.CONTEXT_ONLY; + return this; + } + + /** + * Sets up the factory for context-based matches. + * + * @param {String} prefixSearchSpace - the string to be used as the search + * space for prefix + * @param {String} suffixSearchSpace - the string to be used as the search + * space for suffix + * @return {FragmentFactory} - returns |this| to allow call chaining and + * assignment + */ + setPrefixAndSuffixSearchSpace(prefixSearchSpace, suffixSearchSpace) { + if (prefixSearchSpace) { + this.prefixSearchSpace = prefixSearchSpace; + this.backwardsPrefixSearchSpace = reverseString(prefixSearchSpace); + this.prefixOffset = prefixSearchSpace.length; + } + + if (suffixSearchSpace) { + this.suffixSearchSpace = suffixSearchSpace; + this.suffixOffset = 0; + } + + return this; + } + + /** + * Sets up the factory to use an instance of Intl.Segmenter when identifying + * the start/end of words. |segmenter| is not actually retained; instead it is + * used to create segment objects which are cached. + * + * This must be called AFTER any calls to setStartAndEndSearchSpace, + * setSharedSearchSpace, and/or setPrefixAndSuffixSearchSpace, as these search + * spaces will be segmented immediately. + * + * @param {Intl.Segmenter | Undefined} segmenter + * @return {FragmentFactory} - returns |this| to allow call chaining and + * assignment + */ + useSegmenter(segmenter) { + if (segmenter == null) { + return this; + } + + if (this.mode === this.Mode.ALL_PARTS) { + this.startSegments = segmenter.segment(this.startSearchSpace); + this.endSegments = segmenter.segment(this.endSearchSpace); + } else if (this.mode === this.Mode.SHARED_START_AND_END) { + this.sharedSegments = segmenter.segment(this.sharedSearchSpace); + } + + if (this.prefixSearchSpace) { + this.prefixSegments = segmenter.segment(this.prefixSearchSpace); + } + if (this.suffixSearchSpace) { + this.suffixSegments = segmenter.segment(this.suffixSearchSpace); + } + + return this; + } + + /** + * @return {number} - how many words should be added to the prefix and suffix + * when embiggening. This changes depending on the current state of the + * prefix/suffix, so it should be invoked once per embiggen, before either + * is modified. + */ + getNumberOfContextWordsToAdd() { + return this.backwardsPrefixOffset() === 0 && this.suffixOffset === 0 + ? WORDS_TO_ADD_FIRST_ITERATION + : WORDS_TO_ADD_SUBSEQUENT_ITERATIONS; + } + + /** + * @return {number} - how many words should be added to textStart and textEnd + * when embiggening. This changes depending on the current state of + * textStart/textEnd, so it should be invoked once per embiggen, before + * either is modified. + */ + getNumberOfRangeWordsToAdd() { + return this.startOffset === 0 && this.backwardsEndOffset() === 0 + ? WORDS_TO_ADD_FIRST_ITERATION + : WORDS_TO_ADD_SUBSEQUENT_ITERATIONS; + } + + /** + * Helper method for embiggening using Intl.Segmenter. Finds the next offset + * to be tried in the forwards direction (i.e., a prefix of the search space). + * @param {Segments} segments - the output of segmenting the desired search + * space using Intl.Segmenter + * @param {number} offset - the current offset + * @param {string} searchSpace - the search space that was segmented + * @return {number} - the next offset which should be tried. + */ + getNextOffsetForwards(segments, offset, searchSpace) { + // Find the nearest wordlike segment and move to the end of it. + let currentSegment = segments.containing(offset); + while (currentSegment != null) { + checkTimeout(); + const currentSegmentEnd = + currentSegment.index + currentSegment.segment.length; + if (currentSegment.isWordLike) { + return currentSegmentEnd; + } + currentSegment = segments.containing(currentSegmentEnd); + } + // If we didn't find a wordlike segment by the end of the string, set the + // offset to the full search space. + return searchSpace.length; + } + + /** + * Helper method for embiggening using Intl.Segmenter. Finds the next offset + * to be tried in the backwards direction (i.e., a suffix of the search + * space). + * @param {Segments} segments - the output of segmenting the desired search + * space using Intl.Segmenter + * @param {number} offset - the current offset + * @return {number} - the next offset which should be tried. + */ + getNextOffsetBackwards(segments, offset) { + // Find the nearest wordlike segment and move to the start of it. + let currentSegment = segments.containing(offset); + + // Handle two edge cases: + // 1. |offset| is at the end of the search space, so |currentSegment| + // is undefined + // 2. We're already at the start of a segment, so moving to the start of + // |currentSegment| would be a no-op. + // In both cases, the solution is to grab the segment immediately + // prior to this offset. + if (!currentSegment || offset == currentSegment.index) { + // If offset is 0, this will return null, which is handled below. + currentSegment = segments.containing(offset - 1); + } + + while (currentSegment != null) { + checkTimeout(); + if (currentSegment.isWordLike) { + return currentSegment.index; + } + currentSegment = segments.containing(currentSegment.index - 1); + } + // If we didn't find a wordlike segment by the start of the string, + // set the offset to the full search space. + return 0; + } + + /** + * @return {String} - the string to be used as the search space for textStart + */ + getStartSearchSpace() { + return this.mode === this.Mode.SHARED_START_AND_END + ? this.sharedSearchSpace + : this.startSearchSpace; + } + + /** + * @return {Segments | Undefined} - the result of segmenting the start search + * space using Intl.Segmenter, or undefined if a segmenter was not + * provided. + */ + getStartSegments() { + return this.mode === this.Mode.SHARED_START_AND_END + ? this.sharedSegments + : this.startSegments; + } + + /** + * @return {String} - the string to be used as the search space for textEnd + */ + getEndSearchSpace() { + return this.mode === this.Mode.SHARED_START_AND_END + ? this.sharedSearchSpace + : this.endSearchSpace; + } + + /** + * @return {Segments | Undefined} - the result of segmenting the end search + * space using Intl.Segmenter, or undefined if a segmenter was not + * provided. + */ + getEndSegments() { + return this.mode === this.Mode.SHARED_START_AND_END + ? this.sharedSegments + : this.endSegments; + } + + /** + * @return {String} - the string to be used as the search space for textEnd, + * backwards. + */ + getBackwardsEndSearchSpace() { + return this.mode === this.Mode.SHARED_START_AND_END + ? this.backwardsSharedSearchSpace + : this.backwardsEndSearchSpace; + } + + /** + * @return {String} - the string to be used as the search space for prefix + */ + getPrefixSearchSpace() { + return this.prefixSearchSpace; + } + + /** + * @return {Segments | Undefined} - the result of segmenting the prefix + * search space using Intl.Segmenter, or undefined if a segmenter was not + * provided. + */ + getPrefixSegments() { + return this.prefixSegments; + } + + /** + * @return {String} - the string to be used as the search space for prefix, + * backwards. + */ + getBackwardsPrefixSearchSpace() { + return this.backwardsPrefixSearchSpace; + } + + /** + * @return {String} - the string to be used as the search space for suffix + */ + getSuffixSearchSpace() { + return this.suffixSearchSpace; + } + + /** + * @return {Segments | Undefined} - the result of segmenting the suffix + * search space using Intl.Segmenter, or undefined if a segmenter was not + * provided. + */ + getSuffixSegments() { + return this.suffixSegments; + } + + /** + * Helper method for doing arithmetic in the backwards search space. + * @return {Number} - the current end offset, as a start offset in the + * backwards search space + */ + backwardsEndOffset() { + return this.getEndSearchSpace().length - this.endOffset; + } + + /** + * Helper method for doing arithmetic in the backwards search space. + * @param {Number} backwardsEndOffset - the desired new value of the start + * offset in the backwards search space + */ + setBackwardsEndOffset(backwardsEndOffset) { + this.endOffset = this.getEndSearchSpace().length - backwardsEndOffset; + } + + /** + * Helper method for doing arithmetic in the backwards search space. + * @return {Number} - the current prefix offset, as a start offset in the + * backwards search space + */ + backwardsPrefixOffset() { + if (this.prefixOffset == null) return null; + return this.getPrefixSearchSpace().length - this.prefixOffset; + } + + /** + * Helper method for doing arithmetic in the backwards search space. + * @param {Number} backwardsPrefixOffset - the desired new value of the prefix + * offset in the backwards search space + */ + setBackwardsPrefixOffset(backwardsPrefixOffset) { + if (this.prefixOffset == null) return; + this.prefixOffset = + this.getPrefixSearchSpace().length - backwardsPrefixOffset; + } +}; + +/** + * Helper class to calculate visible text from the start or end of a range + * until a block boundary is reached or the range is exhausted. + */ +const BlockTextAccumulator = class { + /** + * @param {Range} searchRange - the range for which the text in the last or + * first non empty block boundary will be calculated + * @param {boolean} isForwardTraversal - true if nodes in + * searchRange will be forward traversed + */ + constructor(searchRange, isForwardTraversal) { + this.searchRange = searchRange; + this.isForwardTraversal = isForwardTraversal; + this.textFound = false; + this.textNodes = []; + this.textInBlock = null; + } + /** + * Adds the next node in the search space range traversal to the accumulator. + * The accumulator then will keep track of the text nodes in the range until a + * block boundary is found. Once a block boundary is found and the content of + * the text nodes in the boundary is non empty, the property textInBlock will + * be set with the content of the text nodes, trimmed of leading and trailing + * whitespaces. + * @param {Node} node - next node in the traversal of the searchRange + */ + appendNode(node) { + // If we already calculated the text in the block boundary just ignore any + // calls to append nodes. + if (this.textInBlock !== null) { + return; + } + // We found a block boundary, check if there's text inside and set it to + // textInBlock or keep going to the next block boundary. + if (isBlock(node)) { + if (this.textFound) { + // When traversing backwards the nodes are pushed in reverse order. + // Reversing them to get them in the right order. + if (!this.isForwardTraversal) { + this.textNodes.reverse(); + } + // Concatenate all the text nodes in the block boundary and trim any + // trailing and leading whitespaces. + this.textInBlock = this.textNodes + .map(textNode => textNode.textContent) + .join("") + .trim(); + } else { + // Discard the text nodes visited so far since they are empty and we'll + // continue searching in the next block boundary. + this.textNodes = []; + } + return; + } + + // Ignore non text nodes. + if (!isText(node)) return; + + // Get the part of node inside the search range. This is to avoid + // accumulating text that's not inside the range. + const nodeToInsert = this.getNodeIntersectionWithRange(node); + + // Keep track of any text found in the block boundary. + this.textFound = this.textFound || nodeToInsert.textContent.trim() !== ""; + + this.textNodes.push(nodeToInsert); + } + + /** + * Calculates the intersection of a node with searchRange and returns a Text + * Node with the intersection + * @param {Node} node - the node to intercept with searchRange + * @return {Node} - node if node is fully within searchRange or a Text Node + * with the substring of the content of node inside the search range + */ + getNodeIntersectionWithRange(node) { + let startOffset = null; + let endOffset = null; + + if ( + node === this.searchRange.startContainer && + this.searchRange.startOffset !== 0 + ) { + startOffset = this.searchRange.startOffset; + } + + if ( + node === this.searchRange.endContainer && + this.searchRange.endOffset !== node.textContent.length + ) { + endOffset = this.searchRange.endOffset; + } + if (startOffset !== null || endOffset !== null) { + return { + textContent: node.textContent.substring( + startOffset ?? 0, + endOffset ?? node.textContent.length + ) + }; + } + + return node; + } +}; + +/** + * @param {TextFragment} fragment - the candidate fragment + * @return {boolean} - true iff the candidate fragment identifies exactly one + * portion of the document. + */ +const isUniquelyIdentifying = fragment => { + return fragments.processTextFragmentDirective(fragment).length === 1; +}; + +/** + * Reverses a string. Compound unicode characters are preserved. + * @param {String} string - the string to reverse + * @return {String} - sdrawkcab |gnirts| + */ +const reverseString = string => { + // Spread operator (...) splits full characters, rather than code points, to + // avoid breaking compound unicode characters upon reverse. + return [...(string || "")].reverse().join(""); +}; + +/** + * Determines whether the conditions for an exact match are met. + * @param {Range} range - the range for which a fragment is being generated. + * @return {boolean} - true if exact matching (i.e., only + * textStart) can be used; false if range matching (i.e., both textStart and + * textEnd) must be used. + */ +const canUseExactMatch = range => { + if (range.toString().length > MAX_EXACT_MATCH_LENGTH) return false; + return !containsBlockBoundary(range); +}; + +/** + * Finds the node at which a forward traversal through |range| should begin, + * based on the range's start container and offset values. + * @param {Range} range - the range which will be traversed + * @return {Node} - the node where traversal should begin + */ +const getFirstNodeForBlockSearch = range => { + // Get a handle on the first node inside the range. For text nodes, this + // is the start container; for element nodes, we use the offset to find + // where it actually starts. + let node = range.startContainer; + if ( + node.nodeType == Node.ELEMENT_NODE && + range.startOffset < node.childNodes.length + ) { + node = node.childNodes[range.startOffset]; + } + return node; +}; + +/** + * Finds the node at which a backward traversal through |range| should begin, + * based on the range's end container and offset values. + * @param {Range} range - the range which will be traversed + * @return {Node} - the node where traversal should begin + */ +const getLastNodeForBlockSearch = range => { + // Get a handle on the last node inside the range. For text nodes, this + // is the end container; for element nodes, we use the offset to find + // where it actually ends. If the offset is 0, the node itself is returned. + let node = range.endContainer; + if (node.nodeType == Node.ELEMENT_NODE && range.endOffset > 0) { + node = node.childNodes[range.endOffset - 1]; + } + return node; +}; + +/** + * Finds the first visible text node within a given range. + * @param {Range} range - range in which to find the first visible text node + * @return {Node} - first visible text node within |range| or null if there are + * no visible text nodes within |range| + */ +const getFirstTextNode = range => { + // Check if first node in the range is a visible text node. + const firstNode = getFirstNodeForBlockSearch(range); + if (isText(firstNode) && fragments.internal.isNodeVisible(firstNode)) { + return firstNode; + } + + // First node is not visible text, use a tree walker to find the first visible + // text node. + const walker = fragments.internal.makeTextNodeWalker(range); + walker.currentNode = firstNode; + + return walker.nextNode(); +}; + +/** + * Finds the last visible text node within a given range. + * @param {Range} range - range in which to find the last visible text node + * @return {Node} - last visible text node within |range| or null if there are + * no visible text nodes within |range| + */ +const getLastTextNode = range => { + // Check if last node in the range is a visible text node. + const lastNode = getLastNodeForBlockSearch(range); + if (isText(lastNode) && fragments.internal.isNodeVisible(lastNode)) { + return lastNode; + } + + // Last node is not visible text, traverse the range backwards to find the + // last visible text node. + const walker = fragments.internal.makeTextNodeWalker(range); + walker.currentNode = lastNode; + + return fragments.internal.backwardTraverse(walker, new Set()); +}; + +/** + * Determines whether or not a range crosses a block boundary. + * @param {Range} range - the range to investigate + * @return {boolean} - true if a block boundary was found, + * false if no such boundary was found. + */ +const containsBlockBoundary = range => { + const tempRange = range.cloneRange(); + let node = getFirstNodeForBlockSearch(tempRange); + const walker = makeWalkerForNode(node); + if (!walker) { + return false; + } + const finishedSubtrees = new Set(); + + while (!tempRange.collapsed && node != null) { + if (isBlock(node)) return true; + if (node != null) tempRange.setStartAfter(node); + node = fragments.internal.forwardTraverse(walker, finishedSubtrees); + checkTimeout(); + } + return false; +}; + +/** + * Attempts to find a word start within the given text node, starting at + * |offset| and working backwards. + * + * @param {Node} node - a node to be searched + * @param {Number|Undefined} startOffset - the character offset within |node| + * where the selected text begins. If undefined, the entire node will be + * searched. + * @return {Number} the number indicating the offset to which a range should + * be set to ensure it starts on a word bound. Returns -1 if the node is not + * a text node, or if no word boundary character could be found. + */ +const findWordStartBoundInTextNode = (node, startOffset) => { + if (node.nodeType !== Node.TEXT_NODE) return -1; + + const offset = startOffset != null ? startOffset : node.data.length; + + // If the first character in the range is a boundary character, we don't + // need to do anything. + if ( + offset < node.data.length && + fragments.internal.BOUNDARY_CHARS.test(node.data[offset]) + ) + return offset; + + const precedingText = node.data.substring(0, offset); + const boundaryIndex = reverseString(precedingText).search( + fragments.internal.BOUNDARY_CHARS + ); + + if (boundaryIndex !== -1) { + // Because we did a backwards search, the found index counts backwards + // from offset, so we subtract to find the start of the word. + return offset - boundaryIndex; + } + return -1; +}; + +/** + * Attempts to find a word end within the given text node, starting at |offset|. + * + * @param {Node} node - a node to be searched + * @param {Number|Undefined} endOffset - the character offset within |node| + * where the selected text end. If undefined, the entire node will be + * searched. + * @return {Number} the number indicating the offset to which a range should + * be set to ensure it ends on a word bound. Returns -1 if the node is not + * a text node, or if no word boundary character could be found. + */ +const findWordEndBoundInTextNode = (node, endOffset) => { + if (node.nodeType !== Node.TEXT_NODE) return -1; + + const offset = endOffset != null ? endOffset : 0; + + // If the last character in the range is a boundary character, we don't + // need to do anything. + if ( + offset < node.data.length && + offset > 0 && + fragments.internal.BOUNDARY_CHARS.test(node.data[offset - 1]) + ) { + return offset; + } + + const followingText = node.data.substring(offset); + const boundaryIndex = followingText.search(fragments.internal.BOUNDARY_CHARS); + + if (boundaryIndex !== -1) { + return offset + boundaryIndex; + } + return -1; +}; + +/** + * Helper method to create a TreeWalker useful for finding a block boundary near + * a given node. + * @param {Node} node - the node where the search should start + * @param {Node|Undefined} endNode - optional; if included, the root of the + * walker will be chosen to ensure it can traverse at least as far as this + * node. + * @return {TreeWalker} - a TreeWalker, rooted in a block ancestor of |node|, + * currently pointing to |node|, which will traverse only visible text and + * element nodes. + */ +const makeWalkerForNode = (node, endNode) => { + if (!node) { + return undefined; + } + + // Find a block-level ancestor of the node by walking up the tree. This + // will be used as the root of the tree walker. + let blockAncestor = node; + const endNodeNotNull = endNode != null ? endNode : node; + while (!blockAncestor.contains(endNodeNotNull) || !isBlock(blockAncestor)) { + if (blockAncestor.parentNode) { + blockAncestor = blockAncestor.parentNode; + } + } + + const walker = document.createTreeWalker( + blockAncestor, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + node => { + return fragments.internal.acceptNodeIfVisibleInRange(node); + } + ); + + walker.currentNode = node; + return walker; +}; + +/** + * Modifies the start of the range, if necessary, to ensure the selection text + * starts after a boundary char (whitespace, etc.) or a block boundary. Can only + * expand the range, not shrink it. + * @param {Range} range - the range to be modified + */ +const expandRangeStartToWordBound = range => { + const segmenter = fragments.internal.makeNewSegmenter(); + if (segmenter) { + // Find the starting text node and offset (since the range may start with a + // non-text node). + const startNode = getFirstNodeForBlockSearch(range); + if (startNode !== range.startContainer) { + range.setStartBefore(startNode); + } + + expandToNearestWordBoundaryPointUsingSegments( + segmenter, + /* expandForward= */ false, + range + ); + } else { + // Simplest case: If we're in a text node, try to find a boundary char in + // the same text node. + const newOffset = findWordStartBoundInTextNode( + range.startContainer, + range.startOffset + ); + if (newOffset !== -1) { + range.setStart(range.startContainer, newOffset); + return; + } + + // Also, skip doing any traversal if we're already at the inside edge of + // a block node. + if (isBlock(range.startContainer) && range.startOffset === 0) { + return; + } + + const walker = makeWalkerForNode(range.startContainer); + if (!walker) { + return; + } + const finishedSubtrees = new Set(); + + let node = fragments.internal.backwardTraverse(walker, finishedSubtrees); + while (node != null) { + const newOffset = findWordStartBoundInTextNode(node); + if (newOffset !== -1) { + range.setStart(node, newOffset); + return; + } + + // If |node| is a block node, then we've hit a block boundary, which + // counts as a word boundary. + if (isBlock(node)) { + if (node.contains(range.startContainer)) { + // If the selection starts inside |node|, then the correct range + // boundary is the *leading* edge of |node|. + range.setStart(node, 0); + } else { + // Otherwise, |node| is before the selection, so the correct boundary + // is the *trailing* edge of |node|. + range.setStartAfter(node); + } + return; + } + + node = fragments.internal.backwardTraverse(walker, finishedSubtrees); + // We should never get here; the walker should eventually hit a block node + // or the root of the document. Collapse range so the caller can handle + // this as an error. + range.collapse(); + } + } +}; + +/** + * Moves the range edges to the first and last visible text nodes inside of it. + * If there are no visible text nodes in the range then it is collapsed. + * @param {Range} range - the range to be modified + */ +const moveRangeEdgesToTextNodes = range => { + const firstTextNode = getFirstTextNode(range); + // No text nodes in range. Collapsing the range and early return. + if (firstTextNode == null) { + range.collapse(); + return; + } + + const firstNode = getFirstNodeForBlockSearch(range); + + // Making sure the range starts with visible text. + if (firstNode !== firstTextNode) { + range.setStart(firstTextNode, 0); + } + + const lastNode = getLastNodeForBlockSearch(range); + const lastTextNode = getLastTextNode(range); + // No need for no text node checks here because we know at there's at least + // firstTextNode in the range. + + // Making sure the range ends with visible text. + if (lastNode !== lastTextNode) { + range.setEnd(lastTextNode, lastTextNode.textContent.length); + } +}; + +/** + * Uses Intl.Segmenter to shift the start or end of a range to a word boundary. + * Helper method for expandWord*ToWordBound methods. + * @param {Intl.Segmenter} segmenter - object to use for word segmenting + * @param {boolean} isRangeEnd - true if the range end should be modified, false + * if the range start should be modified + * @param {Range} range - the range to modify + */ +const expandToNearestWordBoundaryPointUsingSegments = ( + segmenter, + isRangeEnd, + range +) => { + // Find the index as an offset in the full text of the block in which + // boundary occurs. + const boundary = isRangeEnd + ? { node: range.endContainer, offset: range.endOffset } + : { node: range.startContainer, offset: range.startOffset }; + + const nodes = getTextNodesInSameBlock(boundary.node); + const preNodeText = nodes.preNodes.reduce((prev, cur) => { + return prev.concat(cur.textContent); + }, ""); + + const innerNodeText = nodes.innerNodes.reduce((prev, cur) => { + return prev.concat(cur.textContent); + }, ""); + + let offsetInText = preNodeText.length; + if (boundary.node.nodeType === Node.TEXT_NODE) { + offsetInText += boundary.offset; + } else if (isRangeEnd) { + offsetInText += innerNodeText.length; + } + + // Find the segment of the full block text containing the range start. + const postNodeText = nodes.postNodes.reduce((prev, cur) => { + return prev.concat(cur.textContent); + }, ""); + + const allNodes = [...nodes.preNodes, ...nodes.innerNodes, ...nodes.postNodes]; + + // Edge case: There's no text nodes in the block. + // In that case there's nothing to do because there is no word boundary + // to find. + if (allNodes.length == 0) { + return; + } + + const text = preNodeText.concat(innerNodeText, postNodeText); + + const segments = segmenter.segment(text); + const foundSegment = segments.containing(offsetInText); + + if (!foundSegment) { + if (isRangeEnd) { + range.setEndAfter(allNodes[allNodes.length - 1]); + } else { + range.setEndBefore(allNodes[0]); + } + return; + } + + // Easy case: if the segment is not word-like (i.e., contains whitespace, + // punctuation, etc.) then nothing needs to be done because this + // boundary point is between words. + if (!foundSegment.isWordLike) { + return; + } + + // Another easy case: if we are at the first/last character of the + // segment, then we're done. + if ( + offsetInText === foundSegment.index || + offsetInText === foundSegment.index + foundSegment.segment.length + ) { + return; + } + + // We're inside a word. Based on |isRangeEnd|, the target offset will + // either be the start or the end of the found segment. + const desiredOffsetInText = isRangeEnd + ? foundSegment.index + foundSegment.segment.length + : foundSegment.index; + let newNodeIndexInText = 0; + for (const node of allNodes) { + if ( + newNodeIndexInText <= desiredOffsetInText && + desiredOffsetInText < newNodeIndexInText + node.textContent.length + ) { + const offsetInNode = desiredOffsetInText - newNodeIndexInText; + if (isRangeEnd) { + if (offsetInNode >= node.textContent.length) { + range.setEndAfter(node); + } else { + range.setEnd(node, offsetInNode); + } + } else { + if (offsetInNode >= node.textContent.length) { + range.setStartAfter(node); + } else { + range.setStart(node, offsetInNode); + } + } + return; + } + newNodeIndexInText += node.textContent.length; + } + + // If we got here, then somehow the offset didn't fall within a node. As a + // fallback, move the range to the start/end of the block. + if (isRangeEnd) { + range.setEndAfter(allNodes[allNodes.length - 1]); + } else { + range.setStartBefore(allNodes[0]); + } +}; + +/** + * @typedef {Object} TextNodeLists - the result of traversing the DOM to + * extract TextNodes + * @property {TextNode[]} preNodes - the nodes appearing before a specified + * starting node + * @property {TextNode[]} innerNodes - a list containing |node| if it is a + * text node, or any text node children of |node|. + * @property {TextNode[]} postNodes - the nodes appearing after a specified + * starting node + */ + +/** + * Traverses the DOM to extract all TextNodes appearing in the same block level + * as |node| (i.e., those that are descendents of a common ancestor of |node| + * with no other block elements in between.) + * @param {TextNode} node + * @return {TextNodeLists} + */ +const getTextNodesInSameBlock = node => { + const preNodes = []; + // First, backtraverse to get to a block boundary + const backWalker = makeWalkerForNode(node); + if (!backWalker) { + return; + } + const finishedSubtrees = new Set(); + let backNode = fragments.internal.backwardTraverse( + backWalker, + finishedSubtrees + ); + while (backNode != null && !isBlock(backNode)) { + checkTimeout(); + if (backNode.nodeType === Node.TEXT_NODE) { + preNodes.push(backNode); + } + backNode = fragments.internal.backwardTraverse( + backWalker, + finishedSubtrees + ); + } + preNodes.reverse(); + + const innerNodes = []; + if (node.nodeType === Node.TEXT_NODE) { + innerNodes.push(node); + } else { + const walker = document.createTreeWalker( + node, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + node => { + return fragments.internal.acceptNodeIfVisibleInRange(node); + } + ); + walker.currentNode = node; + let child = walker.nextNode(); + while (child != null) { + checkTimeout(); + if (child.nodeType === Node.TEXT_NODE) { + innerNodes.push(child); + } + child = walker.nextNode(); + } + } + + const postNodes = []; + const forwardWalker = makeWalkerForNode(node); + if (!forwardWalker) { + return; + } + // Forward traverse from node after having finished its subtree + // to get text nodes after it until we find a block boundary. + const finishedSubtreesForward = new Set([node]); + let forwardNode = fragments.internal.forwardTraverse( + forwardWalker, + finishedSubtreesForward + ); + while (forwardNode != null && !isBlock(forwardNode)) { + checkTimeout(); + if (forwardNode.nodeType === Node.TEXT_NODE) { + postNodes.push(forwardNode); + } + forwardNode = fragments.internal.forwardTraverse( + forwardWalker, + finishedSubtreesForward + ); + } + + return { preNodes: preNodes, innerNodes: innerNodes, postNodes: postNodes }; +}; + +/** + * Modifies the end of the range, if necessary, to ensure the selection text + * ends before a boundary char (whitespace, etc.) or a block boundary. Can only + * expand the range, not shrink it. + * @param {Range} range - the range to be modified + */ +const expandRangeEndToWordBound = range => { + const segmenter = fragments.internal.makeNewSegmenter(); + if (segmenter) { + // Find the ending text node and offset (since the range may end with a + // non-text node). + const endNode = getLastNodeForBlockSearch(range); + if (endNode !== range.endContainer) { + range.setEndAfter(endNode); + } + expandToNearestWordBoundaryPointUsingSegments( + segmenter, + /* expandForward= */ true, + range + ); + } else { + let initialOffset = range.endOffset; + + let node = range.endContainer; + if (node.nodeType === Node.ELEMENT_NODE) { + if (range.endOffset < node.childNodes.length) { + node = node.childNodes[range.endOffset]; + } + } + + const walker = makeWalkerForNode(node); + if (!walker) { + return; + } + // We'll traverse the dom after node's subtree to try to find + // either a word or block boundary. + const finishedSubtrees = new Set([node]); + + while (node != null) { + checkTimeout(); + + const newOffset = findWordEndBoundInTextNode(node, initialOffset); + // Future iterations should not use initialOffset; null it out so it is + // discarded. + initialOffset = null; + + if (newOffset !== -1) { + range.setEnd(node, newOffset); + return; + } + + // If |node| is a block node, then we've hit a block boundary, which + // counts as a word boundary. + if (isBlock(node)) { + if (node.contains(range.endContainer)) { + // If the selection starts inside |node|, then the correct range + // boundary is the *trailing* edge of |node|. + range.setEnd(node, node.childNodes.length); + } else { + // Otherwise, |node| is after the selection, so the correct boundary + // is the *leading* edge of |node|. + range.setEndBefore(node); + } + return; + } + + node = fragments.internal.forwardTraverse(walker, finishedSubtrees); + } + // We should never get here; the walker should eventually hit a block node + // or the root of the document. Collapse range so the caller can handle this + // as an error. + range.collapse(); + } +}; + +/** + * Helper to determine if a node is a block element or not. + * @param {Node} node - the node to evaluate + * @return {Boolean} - true if the node is an element classified as block-level + */ +const isBlock = node => { + return ( + node.nodeType === Node.ELEMENT_NODE && + (fragments.internal.BLOCK_ELEMENTS.includes(node.tagName.toUpperCase()) || + node.tagName.toUpperCase() === "HTML" || + node.tagName.toUpperCase() === "BODY") + ); +}; + +/** + * Helper to determine if a node is a Text Node or not + * @param {Node} node - the node to evaluate + * @return {Boolean} - true if the node is a Text Node + */ +const isText = node => { + return node.nodeType === Node.TEXT_NODE; +}; + +export const forTesting = { + containsBlockBoundary: containsBlockBoundary, + doGenerateFragment: doGenerateFragment, + expandRangeEndToWordBound: expandRangeEndToWordBound, + expandRangeStartToWordBound: expandRangeStartToWordBound, + findWordEndBoundInTextNode: findWordEndBoundInTextNode, + findWordStartBoundInTextNode: findWordStartBoundInTextNode, + FragmentFactory: FragmentFactory, + getSearchSpaceForEnd: getSearchSpaceForEnd, + getSearchSpaceForStart: getSearchSpaceForStart, + getTextNodesInSameBlock: getTextNodesInSameBlock, + recordStartTime: recordStartTime, + BlockTextAccumulator: BlockTextAccumulator, + getFirstTextNode: getFirstTextNode, + getLastTextNode: getLastTextNode, + moveRangeEdgesToTextNodes: moveRangeEdgesToTextNodes +}; + +// Allow importing module from closure-compiler projects that haven't migrated +// to ES6 modules. +if (typeof goog !== "undefined") { + // clang-format off + goog.declareModuleId( + "googleChromeLabs.textFragmentPolyfill.fragmentGenerationUtils" + ); + // clang-format on +} diff --git a/client/src/reader/containers/annotation/annotatable-components/text-fragments-polyfill/text-fragment-utils.js b/client/src/reader/containers/annotation/annotatable-components/text-fragments-polyfill/text-fragment-utils.js new file mode 100644 index 0000000000..5bd866cb4a --- /dev/null +++ b/client/src/reader/containers/annotation/annotatable-components/text-fragments-polyfill/text-fragment-utils.js @@ -0,0 +1,1252 @@ +/** + * Copyright 2020 Google LLC + * + * 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 + * + * https://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, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-disable */ + +/** + * @typedef {Object} TextFragment + * @property {string} textStart + * @property {string} [textEnd] + * @property {string} [prefix] + * @property {string} [suffix] + */ + +const FRAGMENT_DIRECTIVES = ["text"]; + +// Block elements. elements of a text fragment cannot cross the boundaries of a +// block element. Source for the list: +// https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements#Elements +const BLOCK_ELEMENTS = [ + "ADDRESS", + "ARTICLE", + "ASIDE", + "BLOCKQUOTE", + "BR", + "DETAILS", + "DIALOG", + "DD", + "DIV", + "DL", + "DT", + "FIELDSET", + "FIGCAPTION", + "FIGURE", + "FOOTER", + "FORM", + "H1", + "H2", + "H3", + "H4", + "H5", + "H6", + "HEADER", + "HGROUP", + "HR", + "LI", + "MAIN", + "NAV", + "OL", + "P", + "PRE", + "SECTION", + "TABLE", + "UL", + "TR", + "TH", + "TD", + "COLGROUP", + "COL", + "CAPTION", + "THEAD", + "TBODY", + "TFOOT" +]; + +// Characters that indicate a word boundary. Use the script +// tools/generate-boundary-regex.js if it's necessary to modify or regenerate +// this. Because it's a hefty regex, this should be used infrequently and only +// on single-character strings. +const BOUNDARY_CHARS = /[\t-\r -#%-\*,-\/:;\?@\[-\]_\{\}\x85\xA0\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E44\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/u; + +// The same thing, but with a ^. +const NON_BOUNDARY_CHARS = /[^\t-\r -#%-\*,-\/:;\?@\[-\]_\{\}\x85\xA0\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E44\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/u; + +/** + * Text fragments CSS class name. + */ +export const TEXT_FRAGMENT_CSS_CLASS_NAME = + "text-fragments-polyfill-target-text"; + +/** + * Get all text fragments from a string + * @param {string} hash - string retrieved from Location#hash. + * @return {{text: string[]}} Text Fragments contained in the hash. + */ +export const getFragmentDirectives = hash => { + const fragmentDirectivesStrings = hash + .replace(/#.*?:~:(.*?)/, "$1") + .split(/&?text=/) + .filter(Boolean); + if (!fragmentDirectivesStrings.length) { + return {}; + } else { + return { text: fragmentDirectivesStrings }; + } +}; + +/** + * Decompose text fragment strings into objects, describing each part of each + * text fragment. + * @param {{text: string[]}} fragmentDirectives - Text fragment to decompose + * into separate elements. + * @return {{text: TextFragment[]}} Text Fragments, each containing textStart, + * textEnd, prefix and suffix. + */ +export const parseFragmentDirectives = fragmentDirectives => { + const parsedFragmentDirectives = {}; + for (const [ + fragmentDirectiveType, + fragmentDirectivesOfType + ] of Object.entries(fragmentDirectives)) { + if (FRAGMENT_DIRECTIVES.includes(fragmentDirectiveType)) { + parsedFragmentDirectives[ + fragmentDirectiveType + ] = fragmentDirectivesOfType.map(fragmentDirectiveOfType => { + return parseTextFragmentDirective(fragmentDirectiveOfType); + }); + } + } + return parsedFragmentDirectives; +}; + +/** + * Decompose a string into an object containing all the parts of a text + * fragment. + * @param {string} textFragment - String to decompose. + * @return {TextFragment} Object containing textStart, textEnd, prefix and + * suffix of the text fragment. + */ +const parseTextFragmentDirective = textFragment => { + const TEXT_FRAGMENT = /^(?:(.+?)-,)?(?:(.+?))(?:,([^-]+?))?(?:,-(.+?))?$/; + return { + prefix: decodeURIComponent(textFragment.replace(TEXT_FRAGMENT, "$1")), + textStart: decodeURIComponent(textFragment.replace(TEXT_FRAGMENT, "$2")), + textEnd: decodeURIComponent(textFragment.replace(TEXT_FRAGMENT, "$3")), + suffix: decodeURIComponent(textFragment.replace(TEXT_FRAGMENT, "$4")) + }; +}; + +/** + * Mark the text fragments with `` tags. + * @param {{text: TextFragment[]}} parsedFragmentDirectives - Text fragments to + * process. + * @param {Document} documentToProcess - document where to extract and mark + * fragments in. + * @return {{text: Element[]}} `` elements created to highlight the + * text fragments. + */ +export const processFragmentDirectives = ( + parsedFragmentDirectives, + documentToProcess = document +) => { + const processedFragmentDirectives = {}; + for (const [ + fragmentDirectiveType, + fragmentDirectivesOfType + ] of Object.entries(parsedFragmentDirectives)) { + if (FRAGMENT_DIRECTIVES.includes(fragmentDirectiveType)) { + processedFragmentDirectives[ + fragmentDirectiveType + ] = fragmentDirectivesOfType.map(fragmentDirectiveOfType => { + const result = processTextFragmentDirective( + fragmentDirectiveOfType, + documentToProcess + ); + if (result.length >= 1) { + // Per spec, the first matching text on the page should be + // highlighted when multiple segments match. + return markRange(result[0], documentToProcess); + } + return []; + }); + } + } + return processedFragmentDirectives; +}; + +/** + * Searches the document for a given text fragment. + * + * @param {TextFragment} textFragment - Text Fragment to highlight. + * @param {Document} documentToProcess - document where to extract and mark + * fragments in. + * @return {Ranges[]} - Zero or more ranges within the document corresponding + * to the fragment. If the fragment corresponds to more than one location + * in the document (i.e., is ambiguous) then the first two matches will be + * returned (regardless of how many more matches there may be in the + * document). + */ + +export const processTextFragmentDirective = ( + textFragment, + documentToProcess = document +) => { + const results = []; + + const searchRange = documentToProcess.createRange(); + searchRange.selectNodeContents(documentToProcess.body); + + while (!searchRange.collapsed && results.length < 2) { + let potentialMatch; + if (textFragment.prefix) { + const prefixMatch = findTextInRange(textFragment.prefix, searchRange); + if (prefixMatch == null) { + break; + } + // Future iterations, if necessary, should start after the first + // character of the prefix match. + advanceRangeStartPastOffset( + searchRange, + prefixMatch.startContainer, + prefixMatch.startOffset + ); + + // The search space for textStart is everything after the prefix and + // before the end of the top-level search range, starting at the next + // non- whitespace position. + const matchRange = documentToProcess.createRange(); + matchRange.setStart(prefixMatch.endContainer, prefixMatch.endOffset); + matchRange.setEnd(searchRange.endContainer, searchRange.endOffset); + + advanceRangeStartToNonWhitespace(matchRange); + if (matchRange.collapsed) { + break; + } + + potentialMatch = findTextInRange(textFragment.textStart, matchRange); + // If textStart wasn't found anywhere in the matchRange, then there's + // no possible match and we can stop early. + if (potentialMatch == null) { + break; + } + + // If potentialMatch is immediately after the prefix (i.e., its start + // equals matchRange's start), this is a candidate and we should keep + // going with this iteration. Otherwise, we'll need to find the next + // instance (if any) of the prefix. + if ( + potentialMatch.compareBoundaryPoints( + Range.START_TO_START, + matchRange + ) !== 0 + ) { + continue; + } + } else { + // With no prefix, just look directly for textStart. + potentialMatch = findTextInRange(textFragment.textStart, searchRange); + if (potentialMatch == null) { + break; + } + advanceRangeStartPastOffset( + searchRange, + potentialMatch.startContainer, + potentialMatch.startOffset + ); + } + + if (textFragment.textEnd) { + const textEndRange = documentToProcess.createRange(); + textEndRange.setStart( + potentialMatch.endContainer, + potentialMatch.endOffset + ); + textEndRange.setEnd(searchRange.endContainer, searchRange.endOffset); + + // Keep track of matches of the end term followed by suffix term + // (if needed). + // If no matches are found then there's no point in keeping looking + // for matches of the start term after the current start term + // occurrence. + let matchFound = false; + + // Search through the rest of the document to find a textEnd match. + // This may take multiple iterations if a suffix needs to be found. + while (!textEndRange.collapsed && results.length < 2) { + const textEndMatch = findTextInRange( + textFragment.textEnd, + textEndRange + ); + if (textEndMatch == null) { + break; + } + + advanceRangeStartPastOffset( + textEndRange, + textEndMatch.startContainer, + textEndMatch.startOffset + ); + + potentialMatch.setEnd( + textEndMatch.endContainer, + textEndMatch.endOffset + ); + + if (textFragment.suffix) { + // If there's supposed to be a suffix, check if it appears after + // the textEnd we just found. + const suffixResult = checkSuffix( + textFragment.suffix, + potentialMatch, + searchRange, + documentToProcess + ); + if (suffixResult === CheckSuffixResult.NO_SUFFIX_MATCH) { + break; + } else if (suffixResult === CheckSuffixResult.SUFFIX_MATCH) { + matchFound = true; + results.push(potentialMatch.cloneRange()); + continue; + } else if (suffixResult === CheckSuffixResult.MISPLACED_SUFFIX) { + continue; + } + } else { + // If we've found textEnd and there's no suffix, then it's a + // match! + matchFound = true; + results.push(potentialMatch.cloneRange()); + } + } + // Stopping match search because suffix or textEnd are missing from + // the rest of the search space. + if (!matchFound) { + break; + } + } else if (textFragment.suffix) { + // If there's no textEnd but there is a suffix, search for the suffix + // after potentialMatch + const suffixResult = checkSuffix( + textFragment.suffix, + potentialMatch, + searchRange, + documentToProcess + ); + if (suffixResult === CheckSuffixResult.NO_SUFFIX_MATCH) { + break; + } else if (suffixResult === CheckSuffixResult.SUFFIX_MATCH) { + results.push(potentialMatch.cloneRange()); + advanceRangeStartPastOffset( + searchRange, + searchRange.startContainer, + searchRange.startOffset + ); + continue; + } else if (suffixResult === CheckSuffixResult.MISPLACED_SUFFIX) { + continue; + } + } else { + results.push(potentialMatch.cloneRange()); + } + } + return results; +}; + +/** + * Removes the given highlights. + * @param {Node[]} marks - a list of elements to be removed, with their + * contents extracted and returned to the parent node (from which they were + * originally pulled). + * @param {Document} documentToProcess - document where to remove the marks. + */ +export const removeMarks = (marks, documentToProcess = document) => { + for (const mark of marks) { + const range = documentToProcess.createRange(); + range.selectNodeContents(mark); + const fragment = range.extractContents(); + const parent = mark.parentNode; + parent.insertBefore(fragment, mark); + parent.removeChild(mark); + } +}; + +/** + * Enum indicating the result of the checkSuffix function. + */ +const CheckSuffixResult = { + NO_SUFFIX_MATCH: 0, // Suffix wasn't found at all. Search should halt. + SUFFIX_MATCH: 1, // The suffix matches the expectation. + MISPLACED_SUFFIX: 2 // The suffix was found, but not in the right place. +}; + +/** + * Checks to see if potentialMatch satisfies the suffix conditions of this + * Text Fragment. + * @param {String} suffix - the suffix text to find + * @param {Range} potentialMatch - the Range containing the match text. + * @param {Range} searchRange - the Range in which to search for |suffix|. + * Regardless of the start boundary of this Range, nothing appearing before + * |potentialMatch| will be considered. + * @param {Document} documentToProcess - document where to extract and mark + * fragments in. + * @return {CheckSuffixResult} - enum value indicating that potentialMatch + * should be accepted, that the search should continue, or that the search + * should halt. + */ +const checkSuffix = ( + suffix, + potentialMatch, + searchRange, + documentToProcess +) => { + const suffixRange = documentToProcess.createRange(); + suffixRange.setStart(potentialMatch.endContainer, potentialMatch.endOffset); + suffixRange.setEnd(searchRange.endContainer, searchRange.endOffset); + advanceRangeStartToNonWhitespace(suffixRange); + + const suffixMatch = findTextInRange(suffix, suffixRange); + // If suffix wasn't found anywhere in the suffixRange, then there's no + // possible match and we can stop early. + if (suffixMatch == null) { + return CheckSuffixResult.NO_SUFFIX_MATCH; + } + + // If suffixMatch is immediately after potentialMatch (i.e., its start + // equals suffixRange's start), this is a match. If not, we have to + // start over from the beginning. + if ( + suffixMatch.compareBoundaryPoints(Range.START_TO_START, suffixRange) !== 0 + ) { + return CheckSuffixResult.MISPLACED_SUFFIX; + } + + return CheckSuffixResult.SUFFIX_MATCH; +}; + +/** + * Sets the start of |range| to be the first boundary point after |offset| in + * |node|--either at offset+1, or after the node. + * @param {Range} range - the range to mutate + * @param {Node} node - the node used to determine the new range start + * @param {Number} offset - the offset immediately before the desired new + * boundary point + */ +const advanceRangeStartPastOffset = (range, node, offset) => { + try { + range.setStart(node, offset + 1); + } catch (err) { + range.setStartAfter(node); + } +}; + +/** + * Modifies |range| to start at the next non-whitespace position. + * @param {Range} range - the range to mutate + */ +const advanceRangeStartToNonWhitespace = range => { + const walker = makeTextNodeWalker(range); + + let node = walker.nextNode(); + while (!range.collapsed && node != null) { + if (node !== range.startContainer) { + range.setStart(node, 0); + } + + if (node.textContent.length > range.startOffset) { + const firstChar = node.textContent[range.startOffset]; + if (!firstChar.match(/\s/)) { + return; + } + } + + try { + range.setStart(node, range.startOffset + 1); + } catch (err) { + node = walker.nextNode(); + if (node == null) { + range.collapse(); + } else { + range.setStart(node, 0); + } + } + } +}; + +/** + * Creates a TreeWalker that traverses a range and emits visible text nodes in + * the range. + * @param {Range} range - Range to be traversed by the walker + * @return {TreeWalker} + */ +const makeTextNodeWalker = range => { + const walker = document.createTreeWalker( + range.commonAncestorContainer, + NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, + node => { + return acceptTextNodeIfVisibleInRange(node, range); + } + ); + + return walker; +}; + +/** + * Given a Range, wraps its text contents in one or more elements. + * elements can't cross block boundaries, so this function walks the + * tree to find all the relevant text nodes and wraps them. + * @param {Range} range - the range to mark. Must start and end inside of + * text nodes. + * @param {Document} documentToProcess - document where to highlight the range. + * @return {Element[]} The nodes that were created. + */ +export const markRange = (range, documentToProcess = document) => { + if ( + range.startContainer.nodeType != Node.TEXT_NODE || + range.endContainer.nodeType != Node.TEXT_NODE + ) + return []; + + // If the range is entirely within a single node, just surround it. + if (range.startContainer === range.endContainer) { + const trivialMark = documentToProcess.createElement("mark"); + trivialMark.setAttribute("class", TEXT_FRAGMENT_CSS_CLASS_NAME); + range.surroundContents(trivialMark); + return [trivialMark]; + } + + // Start node -- special case + const startNode = range.startContainer; + const startNodeSubrange = range.cloneRange(); + startNodeSubrange.setEndAfter(startNode); + + // End node -- special case + const endNode = range.endContainer; + const endNodeSubrange = range.cloneRange(); + endNodeSubrange.setStartBefore(endNode); + + // In between nodes + const marks = []; + range.setStartAfter(startNode); + range.setEndBefore(endNode); + const walker = documentToProcess.createTreeWalker( + range.commonAncestorContainer, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + { + acceptNode(node) { + if (!range.intersectsNode(node)) return NodeFilter.FILTER_REJECT; + + if ( + node.nodeType === Node.TEXT_NODE || + BLOCK_ELEMENTS.includes(node.tagName.toUpperCase()) + ) + return NodeFilter.FILTER_ACCEPT; + return NodeFilter.FILTER_SKIP; + } + } + ); + let node = walker.nextNode(); + while (node) { + if (node.nodeType === Node.TEXT_NODE) { + const mark = documentToProcess.createElement("mark"); + mark.setAttribute("class", TEXT_FRAGMENT_CSS_CLASS_NAME); + node.parentNode.insertBefore(mark, node); + mark.appendChild(node); + marks.push(mark); + } + node = walker.nextNode(); + } + + const startMark = documentToProcess.createElement("mark"); + startMark.setAttribute("class", TEXT_FRAGMENT_CSS_CLASS_NAME); + startNodeSubrange.surroundContents(startMark); + const endMark = documentToProcess.createElement("mark"); + endMark.setAttribute("class", TEXT_FRAGMENT_CSS_CLASS_NAME); + endNodeSubrange.surroundContents(endMark); + + return [startMark, ...marks, endMark]; +}; + +/** + * Helper function to check if the element has attribute `hidden="until-found"`. + * @param {Element} node - the element to evaluate + * @return {Boolean} - true if the element has attribute `hidden="until-found"` + */ +const isHiddenUntilFound = elt => { + if (elt.hidden === "until-found") { + return true; + } + // Workaround for WebKit. See https://bugs.webkit.org/show_bug.cgi?id=238266 + const attributes = elt.attributes; + if (attributes && attributes.hidden) { + const value = attributes.hidden.value; + if (value === "until-found") { + return true; + } + } + return false; +}; + +/** + * Helper function to send `beforematch` event and reset the `hidden` attribute + * of elements with the `hidden="until-found"` attribute from the provided + * element up to the root. Implements + * https://html.spec.whatwg.org/multipage/interaction.html#ancestor-hidden-until-found-revealing-algorithm + * @param {Element} elt - the element to start with + */ +const revealHiddenUntilFoundHierarchy = elt => { + while (elt) { + if (isHiddenUntilFound(elt)) { + elt.dispatchEvent(new Event("beforematch")); + elt.hidden = ""; + } + elt = elt.parentElement; + } +}; + +/** + * Scrolls an element into view, following the recommendation of + * https://wicg.github.io/scroll-to-text-fragment/#navigating-to-text-fragment + * @param {Element} element - Element to scroll into view. + */ +export const scrollElementIntoView = element => { + revealHiddenUntilFoundHierarchy(element); + const behavior = { + behavior: "auto", + block: "center", + inline: "nearest" + }; + element.scrollIntoView(behavior); +}; + +/** + * Helper function to calculate the visibility of a Node based on its CSS + * computed style. This function does not take into account the visibility of + * the node's ancestors so even if the node is visible according to its style + * it might not be visible on the page if one of its ancestors is not visible. + * @param {Node} node - the Node to evaluate + * @return {Boolean} - true if the node is visible. A node will be visible if + * its computed style meets all of the following criteria: + * - non zero height, width, height and opacity + * - visibility not hidden + * - display not none + */ +const isNodeVisible = node => { + // Find an HTMLElement (this node or an ancestor) so we can check + // visibility. + let elt = node; + while (elt != null && !(elt instanceof HTMLElement)) elt = elt.parentNode; + if (elt != null) { + if (isHiddenUntilFound(elt)) { + return true; + } + const nodeStyle = window.getComputedStyle(elt); + // If the node is not rendered, just skip it. + if ( + nodeStyle.visibility === "hidden" || + nodeStyle.display === "none" || + parseInt(nodeStyle.height, 10) === 0 || + parseInt(nodeStyle.width, 10) === 0 || + parseInt(nodeStyle.opacity, 10) === 0 + ) { + return false; + } + } + return true; +}; + +/** + * Filter function for use with TreeWalkers. Rejects nodes that aren't in the + * given range or aren't visible. + * @param {Node} node - the Node to evaluate + * @param {Range|Undefined} range - the range in which node must fall. Optional; + * if null, the range check is skipped. + * @return {NodeFilter} - FILTER_ACCEPT or FILTER_REJECT, to be passed along to + * a TreeWalker. + */ +const acceptNodeIfVisibleInRange = (node, range) => { + if (range != null && !range.intersectsNode(node)) + return NodeFilter.FILTER_REJECT; + + return isNodeVisible(node) + ? NodeFilter.FILTER_ACCEPT + : NodeFilter.FILTER_REJECT; +}; + +/** + * Filter function for use with TreeWalkers. Accepts only visible text nodes + * that are in the given range. Other types of nodes visible in the given range + * are skipped so a TreeWalker using this filter function still visits text + * nodes in the node's subtree. + * @param {Node} node - the Node to evaluate + * @param {Range} range - the range in which node must fall. Optional; + * if null, the range check is skipped/ + * @return {NodeFilter} - NodeFilter value to be passed along to a TreeWalker. + * Values returned: + * - FILTER_REJECT: Node not in range or not visible. + * - FILTER_SKIP: Non Text Node visible and in range + * - FILTER_ACCEPT: Text Node visible and in range + */ +const acceptTextNodeIfVisibleInRange = (node, range) => { + if (range != null && !range.intersectsNode(node)) + return NodeFilter.FILTER_REJECT; + + if (!isNodeVisible(node)) { + return NodeFilter.FILTER_REJECT; + } + + return node.nodeType === Node.TEXT_NODE + ? NodeFilter.FILTER_ACCEPT + : NodeFilter.FILTER_SKIP; +}; + +/** + * Extracts all the text nodes within the given range. + * @param {Node} root - the root node in which to search + * @param {Range} range - a range restricting the scope of extraction + * @return {Array} - a list of lists of text nodes, in document order. + * Lists represent block boundaries; i.e., two nodes appear in the same list + * iff there are no block element starts or ends in between them. + */ +const getAllTextNodes = (root, range) => { + const blocks = []; + let tmp = []; + + const nodes = Array.from( + getElementsIn(root, node => { + return acceptNodeIfVisibleInRange(node, range); + }) + ); + + for (const node of nodes) { + if (node.nodeType === Node.TEXT_NODE) { + tmp.push(node); + } else if ( + node instanceof HTMLElement && + BLOCK_ELEMENTS.includes(node.tagName.toUpperCase()) && + tmp.length > 0 + ) { + // If this is a block element, the current set of text nodes in |tmp| is + // complete, and we need to move on to a new one. + blocks.push(tmp); + tmp = []; + } + } + if (tmp.length > 0) blocks.push(tmp); + + return blocks; +}; + +/** + * Returns the textContent of all the textNodes and normalizes strings by + * replacing duplicated spaces with single space. + * @param {Node[]} nodes - TextNodes to get the textContent from. + * @param {Number} startOffset - Where to start in the first TextNode. + * @param {Number|undefined} endOffset Where to end in the last TextNode. + * @return {string} Entire text content of all the nodes, with spaces + * normalized. + */ +const getTextContent = (nodes, startOffset, endOffset) => { + let str = ""; + if (nodes.length === 1) { + str = nodes[0].textContent.substring(startOffset, endOffset); + } else { + str = + nodes[0].textContent.substring(startOffset) + + nodes.slice(1, -1).reduce((s, n) => s + n.textContent, "") + + nodes.slice(-1)[0].textContent.substring(0, endOffset); + } + return str.replace(/[\t\n\r ]+/g, " "); +}; + +/** + * @callback ElementFilterFunction + * @param {HTMLElement} element - Node to accept, reject or skip. + * @return {number} Either NodeFilter.FILTER_ACCEPT, NodeFilter.FILTER_REJECT + * or NodeFilter.FILTER_SKIP. + */ + +/** + * Returns all nodes inside root using the provided filter. + * @generator + * @param {Node} root - Node where to start the TreeWalker. + * @param {ElementFilterFunction} filter - Filter provided to the TreeWalker's + * acceptNode filter. + * @yield {HTMLElement} All elements that were accepted by filter. + */ +function* getElementsIn(root, filter) { + const treeWalker = document.createTreeWalker( + root, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, + { acceptNode: filter } + ); + + const finishedSubtrees = new Set(); + while (forwardTraverse(treeWalker, finishedSubtrees) !== null) { + yield treeWalker.currentNode; + } +} + +/** + * Returns a range pointing to the first instance of |query| within |range|. + * @param {String} query - the string to find + * @param {Range} range - the range in which to search + * @return {Range|Undefined} - The first found instance of |query| within + * |range|. + */ +const findTextInRange = (query, range) => { + const textNodeLists = getAllTextNodes(range.commonAncestorContainer, range); + const segmenter = makeNewSegmenter(); + + for (const list of textNodeLists) { + const found = findRangeFromNodeList(query, range, list, segmenter); + if (found !== undefined) return found; + } + return undefined; +}; + +/** + * Finds a range pointing to the first instance of |query| within |range|, + * searching over the text contained in a list |nodeList| of relevant textNodes. + * @param {String} query - the string to find + * @param {Range} range - the range in which to search + * @param {Node[]} textNodes - the visible text nodes within |range| + * @param {Intl.Segmenter} [segmenter] - a segmenter to be used for finding word + * boundaries, if supported + * @return {Range} - the found range, or undefined if no such range could be + * found + */ +const findRangeFromNodeList = (query, range, textNodes, segmenter) => { + if (!query || !range || !(textNodes || []).length) return undefined; + const data = normalizeString(getTextContent(textNodes, 0, undefined)); + const normalizedQuery = normalizeString(query); + let searchStart = + textNodes[0] === range.startContainer ? range.startOffset : 0; + let start; + let end; + while (searchStart < data.length) { + const matchIndex = data.indexOf(normalizedQuery, searchStart); + if (matchIndex === -1) return undefined; + if (isWordBounded(data, matchIndex, normalizedQuery.length, segmenter)) { + start = getBoundaryPointAtIndex( + matchIndex, + textNodes, + /* isEnd= */ false + ); + end = getBoundaryPointAtIndex( + matchIndex + normalizedQuery.length, + textNodes, + /* isEnd= */ true + ); + } + + if (start != null && end != null) { + const foundRange = new Range(); + foundRange.setStart(start.node, start.offset); + foundRange.setEnd(end.node, end.offset); + + // Verify that |foundRange| is a subrange of |range| + if ( + range.compareBoundaryPoints(Range.START_TO_START, foundRange) <= 0 && + range.compareBoundaryPoints(Range.END_TO_END, foundRange) >= 0 + ) { + return foundRange; + } + } + searchStart = matchIndex + 1; + } + return undefined; +}; + +/** + * Provides the data needed for calling setStart/setEnd on a Range. + * @typedef {Object} BoundaryPoint + * @property {Node} node + * @property {Number} offset + */ + +/** + * Generates a boundary point pointing to the given text position. + * @param {Number} index - the text offset indicating the start/end of a + * substring of the concatenated, normalized text in |textNodes| + * @param {Node[]} textNodes - the text Nodes whose contents make up the search + * space + * @param {bool} isEnd - indicates whether the offset is the start or end of the + * substring + * @return {BoundaryPoint} - a boundary point suitable for setting as the start + * or end of a Range, or undefined if it couldn't be computed. + */ +const getBoundaryPointAtIndex = (index, textNodes, isEnd) => { + let counted = 0; + let normalizedData; + for (let i = 0; i < textNodes.length; i++) { + const node = textNodes[i]; + if (!normalizedData) normalizedData = normalizeString(node.data); + let nodeEnd = counted + normalizedData.length; + if (isEnd) nodeEnd += 1; + if (nodeEnd > index) { + // |index| falls within this node, but we need to turn the offset in the + // normalized data into an offset in the real node data. + const normalizedOffset = index - counted; + let denormalizedOffset = Math.min(index - counted, node.data.length); + + // Walk through the string until denormalizedOffset produces a substring + // that corresponds to the target from the normalized data. + const targetSubstring = isEnd + ? normalizedData.substring(0, normalizedOffset) + : normalizedData.substring(normalizedOffset); + + let candidateSubstring = isEnd + ? normalizeString(node.data.substring(0, denormalizedOffset)) + : normalizeString(node.data.substring(denormalizedOffset)); + + // We will either lengthen or shrink the candidate string to approach the + // length of the target string. If we're looking for the start, adding 1 + // makes the candidate shorter; if we're looking for the end, it makes the + // candidate longer. + const direction = + (isEnd ? -1 : 1) * + (targetSubstring.length > candidateSubstring.length ? -1 : 1); + + while ( + denormalizedOffset >= 0 && + denormalizedOffset <= node.data.length + ) { + if (candidateSubstring.length === targetSubstring.length) { + return { node, offset: denormalizedOffset }; + } + + denormalizedOffset += direction; + + candidateSubstring = isEnd + ? normalizeString(node.data.substring(0, denormalizedOffset)) + : normalizeString(node.data.substring(denormalizedOffset)); + } + } + counted += normalizedData.length; + + if (i + 1 < textNodes.length) { + // Edge case: if this node ends with a whitespace character and the next + // node starts with one, they'll be double-counted relative to the + // normalized version. Subtract 1 from |counted| to compensate. + const nextNormalizedData = normalizeString(textNodes[i + 1].data); + if ( + normalizedData.slice(-1) === " " && + nextNormalizedData.slice(0, 1) === " " + ) { + counted -= 1; + } + // Since we already normalized the next node's data, hold on to it for the + // next iteration. + normalizedData = nextNormalizedData; + } + } + return undefined; +}; + +/** + * Checks if a substring is word-bounded in the context of a longer string. + * + * If an Intl.Segmenter is provided for locale-specific segmenting, it will be + * used for this check. This is the most desirable option, but not supported in + * all browsers. + * + * If one is not provided, a heuristic will be applied, + * returning true iff: + * - startPos == 0 OR char before start is a boundary char, AND + * - length indicates end of string OR char after end is a boundary char + * Where boundary chars are whitespace/punctuation defined in the const above. + * This causes the known issue that some languages, notably Japanese, only match + * at the level of roughly a full clause or sentence, rather than a word. + * + * @param {String} text - the text to search + * @param {Number} startPos - the index of the start of the substring + * @param {Number} length - the length of the substring + * @param {Intl.Segmenter} [segmenter] - a segmenter to be used for finding word + * boundaries, if supported + * @return {bool} - true iff startPos and length point to a word-bounded + * substring of |text|. + */ +const isWordBounded = (text, startPos, length, segmenter) => { + if ( + startPos < 0 || + startPos >= text.length || + length <= 0 || + startPos + length > text.length + ) { + return false; + } + + if (segmenter) { + // If the Intl.Segmenter API is available on this client, use it for more + // reliable word boundary checking. + + const segments = segmenter.segment(text); + const startSegment = segments.containing(startPos); + if (!startSegment) return false; + // If the start index is inside a word segment but not the first character + // in that segment, it's not word-bounded. If it's not a word segment, then + // it's punctuation, etc., so that counts for word bounding. + if (startSegment.isWordLike && startSegment.index != startPos) return false; + + // |endPos| points to the first character outside the target substring. + const endPos = startPos + length; + const endSegment = segments.containing(endPos); + + // If there's no end segment found, it's because we're at the end of the + // text, which is a valid boundary. (Because of the preconditions we + // checked above, we know we aren't out of range.) + // If there's an end segment found but it's non-word-like, that's also OK, + // since punctuation and whitespace are acceptable boundaries. + // Lastly, if there's an end segment and it is word-like, then |endPos| + // needs to point to the start of that new word, or |endSegment.index|. + if (endSegment && endSegment.isWordLike && endSegment.index != endPos) + return false; + } else { + // We don't have Intl.Segmenter support, so fall back to checking whether or + // not the substring is flanked by boundary characters. + + // If the first character is already a boundary, move it once. + if (text[startPos].match(BOUNDARY_CHARS)) { + ++startPos; + --length; + if (!length) { + return false; + } + } + + // If the last character is already a boundary, move it once. + if (text[startPos + length - 1].match(BOUNDARY_CHARS)) { + --length; + if (!length) { + return false; + } + } + + if (startPos !== 0 && !text[startPos - 1].match(BOUNDARY_CHARS)) + return false; + + if ( + startPos + length !== text.length && + !text[startPos + length].match(BOUNDARY_CHARS) + ) + return false; + } + + return true; +}; + +/** + * @param {String} str - a string to be normalized + * @return {String} - a normalized version of |str| with all consecutive + * whitespace chars converted to a single ' ' and all diacriticals removed + * (e.g., 'é' -> 'e'). + */ +const normalizeString = str => { + // First, decompose any characters with diacriticals. Then, turn all + // consecutive whitespace characters into a standard " ", and strip out + // anything in the Unicode U+0300..U+036F (Combining Diacritical Marks) range. + // This may change the length of the string. + return (str || "") + .normalize("NFKD") + .replace(/\s+/g, " ") + .replace(/[\u0300-\u036f]/g, "") + .toLowerCase(); +}; + +/** + * @return {Intl.Segmenter|undefined} - a segmenter object suitable for finding + * word boundaries. Returns undefined on browsers/platforms that do not yet + * support the Intl.Segmenter API. + */ +const makeNewSegmenter = () => { + if (Intl.Segmenter) { + let lang = document.documentElement.lang; + if (!lang) { + lang = navigator.languages; + } + return new Intl.Segmenter(lang, { granularity: "word" }); + } + return undefined; +}; + +/** + * Performs traversal on a TreeWalker, visiting each subtree in document order. + * When visiting a subtree not already visited (its root not in finishedSubtrees + * ), first the root is emitted then the subtree is traversed, then the root is + * emitted again and then the next subtree in document order is visited. + * + * Subtree's roots are emitted twice to signal the beginning and ending of + * element nodes. This is useful for ensuring the ends of block boundaries are + * found. + * @param {TreeWalker} walker - the TreeWalker to be traversed + * @param {Set} finishedSubtrees - set of subtree roots already visited + * @return {Node} - next node in the traversal + */ +const forwardTraverse = (walker, finishedSubtrees) => { + // If current node's subtree is not already finished + // try to go first down the subtree. + if (!finishedSubtrees.has(walker.currentNode)) { + const firstChild = walker.firstChild(); + if (firstChild !== null) { + return firstChild; + } + } + + // If no subtree go to next sibling if any. + const nextSibling = walker.nextSibling(); + if (nextSibling !== null) { + return nextSibling; + } + + // If no sibling go back to parent and mark it as finished. + const parent = walker.parentNode(); + + if (parent !== null) { + finishedSubtrees.add(parent); + } + + return parent; +}; + +/** + * Performs backwards traversal on a TreeWalker, visiting each subtree in + * backwards document order. When visiting a subtree not already visited (its + * root not in finishedSubtrees ), first the root is emitted then the subtree is + * backward traversed, then the root is emitted again and then the previous + * subtree in document order is visited. + * + * Subtree's roots are emitted twice to signal the beginning and ending of + * element nodes. This is useful for ensuring block boundaries are found. + * @param {TreeWalker} walker - the TreeWalker to be traversed + * @param {Set} finishedSubtrees - set of subtree roots already visited + * @return {Node} - next node in the backwards traversal + */ +const backwardTraverse = (walker, finishedSubtrees) => { + // If current node's subtree is not already finished + // try to go first down the subtree. + if (!finishedSubtrees.has(walker.currentNode)) { + const lastChild = walker.lastChild(); + if (lastChild !== null) { + return lastChild; + } + } + + // If no subtree go to previous sibling if any. + const previousSibling = walker.previousSibling(); + if (previousSibling !== null) { + return previousSibling; + } + + // If no sibling go back to parent and mark it as finished. + const parent = walker.parentNode(); + + if (parent !== null) { + finishedSubtrees.add(parent); + } + + return parent; +}; + +/** + * Should not be referenced except in the /test directory. + */ +export const forTesting = { + advanceRangeStartPastOffset, + advanceRangeStartToNonWhitespace, + findRangeFromNodeList, + findTextInRange, + getBoundaryPointAtIndex, + isWordBounded, + makeNewSegmenter, + markRange, + normalizeString, + parseTextFragmentDirective, + forwardTraverse, + backwardTraverse, + getAllTextNodes, + acceptTextNodeIfVisibleInRange +}; + +/** + * Should only be used by other files in this directory. + */ +export const internal = { + BLOCK_ELEMENTS, + BOUNDARY_CHARS, + NON_BOUNDARY_CHARS, + acceptNodeIfVisibleInRange, + normalizeString, + makeNewSegmenter, + forwardTraverse, + backwardTraverse, + makeTextNodeWalker, + isNodeVisible +}; + +// Allow importing module from closure-compiler projects that haven't migrated +// to ES6 modules. +if (typeof goog !== "undefined") { + // clang-format off + goog.declareModuleId( + "googleChromeLabs.textFragmentPolyfill.textFragmentUtils" + ); + // clang-format on +} + +/** + * Replaces all occurence of the pseudo element ::target-text to a css class + * text-fragments-polyfill-target-text + * + */ +export const applyTargetTextStyle = () => { + const styles = document.getElementsByTagName("style"); + if (!styles) return; + + for (const style of styles) { + const cssRules = style.innerHTML; + const targetTextRules = cssRules.match( + /::target-text\s*{\s*(?:(?:.|\n)*?)\s*}/g + ); + if (!targetTextRules) continue; + + const markCss = targetTextRules.join("\n"); + const newNode = document.createTextNode( + markCss.replaceAll("::target-text", ` .${TEXT_FRAGMENT_CSS_CLASS_NAME}`) + ); + style.appendChild(newNode); + } +}; + +/** + * Add color and background-color to the CSS class. + * + * @param {Object} - background-color and color that will be applied to the + * to the CSS class. + */ +export const setDefaultTextFragmentsStyle = ({ backgroundColor, color }) => { + const defaultStyle = `.${TEXT_FRAGMENT_CSS_CLASS_NAME} { + background-color: ${backgroundColor}; + color: ${color}; + } + + .${TEXT_FRAGMENT_CSS_CLASS_NAME} a, a .${TEXT_FRAGMENT_CSS_CLASS_NAME} { + text-decoration: underline; + } + `; + document.head.insertAdjacentHTML( + "beforeend", + `` + ); +}; diff --git a/client/src/test/fixtures/entities/index.js b/client/src/test/fixtures/entities/index.js index 63f5bb47ae..335bd03eb1 100644 --- a/client/src/test/fixtures/entities/index.js +++ b/client/src/test/fixtures/entities/index.js @@ -29,8 +29,6 @@ import subject from "./subject"; import text from "./text"; import textCategory from "./text-category"; import textSection from "./text-section"; -import tweetEvent from "./tweet-event"; -import twitterQuery from "./twitter-query"; import user from "./user"; import version from "./version"; @@ -67,8 +65,6 @@ export default { text, textCategory, textSection, - tweetEvent, - twitterQuery, user, version }; diff --git a/client/src/test/fixtures/entities/tweet-event.js b/client/src/test/fixtures/entities/tweet-event.js deleted file mode 100644 index 44dc5360a4..0000000000 --- a/client/src/test/fixtures/entities/tweet-event.js +++ /dev/null @@ -1,16 +0,0 @@ -const tweetEvent = () => ({ - type: "events", - attributes: { - eventType: "tweet", - eventTitle: "Tweet Created", - subjectType: "Tweet", - subjectTitle: "New Tweet", - createdAt: "2017-04-24T23:25:50.161Z", - attributionName: "Manifold Scholarship", - attributionUrl: "https://twitter.com/ManifoldScholar", - attributionIdentifier: "ManifoldScholar", - excerpt: "Manifold is great!" - } -}); - -export default tweetEvent; diff --git a/client/src/test/fixtures/entities/twitter-query.js b/client/src/test/fixtures/entities/twitter-query.js deleted file mode 100644 index c8a328754d..0000000000 --- a/client/src/test/fixtures/entities/twitter-query.js +++ /dev/null @@ -1,14 +0,0 @@ -const twitterQuery = () => ({ - type: "twitterQueries", - attributes: { - query: "from:manifoldscholar", - active: true, - resultsType: "most_recent", - eventsCount: 0 - }, - relationships: { - project: "project" - } -}); - -export default twitterQuery; diff --git a/client/src/theme/styles/components/global/index.js b/client/src/theme/styles/components/global/index.js index 555459dfd2..17c0bfbe51 100644 --- a/client/src/theme/styles/components/global/index.js +++ b/client/src/theme/styles/components/global/index.js @@ -17,7 +17,6 @@ import paginationCount from "./paginationCount"; import search from "./search"; import sectionHeading from "./sectionHeading"; import sectionHeadingSecondary from "./sectionHeadingSecondary"; -import shareNavPrimary from "./shareNavPrimary"; import skipToMain from "./skipToMain"; import table from "./table"; import userMenu from "./userMenu"; @@ -37,7 +36,6 @@ export default ` ${loadingBar} ${sectionHeading} ${sectionHeadingSecondary} - ${shareNavPrimary} ${userMenu} ${instructionalCopy} ${search} diff --git a/client/src/theme/styles/components/global/shareNavPrimary.js b/client/src/theme/styles/components/global/shareNavPrimary.js deleted file mode 100644 index 9835eda773..0000000000 --- a/client/src/theme/styles/components/global/shareNavPrimary.js +++ /dev/null @@ -1,33 +0,0 @@ -import { - utilityPrimary, - listUnstyled, - buttonUnstyled -} from "theme/styles/mixins"; - -export default ` - .share-nav-primary { - display: flex; - align-items: center; - - &__label { - ${utilityPrimary} - margin-right: 8px; - font-size: 14px; - line-height: 15px; - } - - &__list { - ${listUnstyled} - display: flex; - align-items: center; - } - - &__link { - ${buttonUnstyled} - padding-right: 8px; - padding-left: 8px; - color: var(--color-neutral-ui-dark); - text-decoration: none; - } - } -`; diff --git a/client/src/theme/styles/components/reader/sectionNextSection.js b/client/src/theme/styles/components/reader/sectionNextSection.js index 99c7fbe721..f3b2403f78 100644 --- a/client/src/theme/styles/components/reader/sectionNextSection.js +++ b/client/src/theme/styles/components/reader/sectionNextSection.js @@ -14,9 +14,13 @@ export default ` background-color: var(--color-base-neutral90); } + &__container { + padding-block-start: ${fluidScale("64px", "0px")}; + padding-block-end: ${fluidScale("130px", "50px")}; + } + &__link { - display: block; - padding: ${fluidScale("64px", "0px")} 0 ${fluidScale("130px", "50px")}; + display: inline-block; text-decoration: none; } diff --git a/client/src/theme/styles/components/reader/textSection.js b/client/src/theme/styles/components/reader/textSection.js index d9f3d5405a..3e7ac8f0b5 100644 --- a/client/src/theme/styles/components/reader/textSection.js +++ b/client/src/theme/styles/components/reader/textSection.js @@ -32,6 +32,14 @@ export default ` background-color: var(--selection-bg-color); } + *::target-text { + background-color: var(--color-base-violet20); + + .scheme-dark & { + background-color: var(--color-base-violet75); + } + } + &.font-sans-serif { font-family: var(--font-family-sans); font-weight: var(--font-weight-light); diff --git a/client/src/utils/oauth/popup.js b/client/src/utils/oauth/popup.js index 8ecbd7d4f7..3a39c70fbf 100644 --- a/client/src/utils/oauth/popup.js +++ b/client/src/utils/oauth/popup.js @@ -14,9 +14,6 @@ function getPopupOffset({ width, height }) { function getPopupSize(provider) { switch (provider) { - case "facebook": - return { width: 580, height: 400 }; - case "google": return { width: 452, height: 633 }; @@ -26,9 +23,6 @@ function getPopupSize(provider) { case "linkedin": return { width: 527, height: 582 }; - case "twitter": - return { width: 495, height: 645 }; - case "live": return { width: 500, height: 560 };