You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
476 lines
14 KiB
476 lines
14 KiB
1 month ago
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
||
|
|
||
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||
|
|
||
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
||
|
|
||
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
||
|
|
||
|
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
||
|
|
||
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
||
|
|
||
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||
|
|
||
|
import { v4 as uuid } from 'uuid';
|
||
|
export default {
|
||
|
state: {// slice: 'mirador' // Configure the top-level slice of state for mirador selectors
|
||
|
},
|
||
|
canvasNavigation: {
|
||
|
// Set the height and width of canvas thumbnails in the CanvasNavigation companion window
|
||
|
height: 50,
|
||
|
width: 50
|
||
|
},
|
||
|
selectedTheme: 'light',
|
||
|
// dark also available
|
||
|
themes: {
|
||
|
dark: {
|
||
|
palette: {
|
||
|
type: 'dark',
|
||
|
primary: {
|
||
|
main: '#4db6ac'
|
||
|
},
|
||
|
secondary: {
|
||
|
main: '#4db6ac'
|
||
|
},
|
||
|
shades: {
|
||
|
dark: '#000000',
|
||
|
main: '#424242',
|
||
|
light: '#616161'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
light: {
|
||
|
palette: {
|
||
|
type: 'light'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
theme: {
|
||
|
// Sets up a MaterialUI theme. See https://material-ui.com/customization/default-theme/
|
||
|
palette: {
|
||
|
type: 'light',
|
||
|
primary: {
|
||
|
main: '#1967d2' // Controls the color of the Add button and current window indicator
|
||
|
|
||
|
},
|
||
|
secondary: {
|
||
|
main: '#1967d2' // Controls the color of Selects and FormControls
|
||
|
|
||
|
},
|
||
|
shades: {
|
||
|
// Shades that can be used to offset color areas of the Workspace / Window
|
||
|
dark: '#eeeeee',
|
||
|
main: '#ffffff',
|
||
|
light: '#f5f5f5'
|
||
|
},
|
||
|
error: {
|
||
|
main: '#b00020'
|
||
|
},
|
||
|
notification: {
|
||
|
// Color used in MUI Badge dots
|
||
|
main: '#ffa224'
|
||
|
},
|
||
|
hitCounter: {
|
||
|
"default": '#bdbdbd'
|
||
|
},
|
||
|
highlights: {
|
||
|
primary: '#ffff00',
|
||
|
secondary: '#00BFFF'
|
||
|
},
|
||
|
section_divider: 'rgba(0, 0, 0, 0.25)',
|
||
|
annotations: {
|
||
|
hidden: {
|
||
|
globalAlpha: 0
|
||
|
},
|
||
|
"default": {
|
||
|
strokeStyle: '#00BFFF',
|
||
|
globalAlpha: 1
|
||
|
},
|
||
|
hovered: {
|
||
|
strokeStyle: '#BF00FF',
|
||
|
globalAlpha: 1
|
||
|
},
|
||
|
selected: {
|
||
|
strokeStyle: '#ffff00',
|
||
|
globalAlpha: 1
|
||
|
}
|
||
|
},
|
||
|
search: {
|
||
|
"default": {
|
||
|
fillStyle: '#00BFFF',
|
||
|
globalAlpha: 0.3
|
||
|
},
|
||
|
hovered: {
|
||
|
fillStyle: '#00FFFF',
|
||
|
globalAlpha: 0.3
|
||
|
},
|
||
|
selected: {
|
||
|
fillStyle: '#ffff00',
|
||
|
globalAlpha: 0.3
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
typography: {
|
||
|
body1: {
|
||
|
fontSize: "1rem",
|
||
|
letterSpacing: "0em",
|
||
|
lineHeight: "1.6em"
|
||
|
},
|
||
|
body2: {
|
||
|
fontSize: "0.878rem",
|
||
|
letterSpacing: "0.015em",
|
||
|
lineHeight: "1.6em"
|
||
|
},
|
||
|
button: {
|
||
|
fontSize: "0.878rem",
|
||
|
letterSpacing: "0.09em",
|
||
|
lineHeight: "2.25rem",
|
||
|
textTransform: "uppercase"
|
||
|
},
|
||
|
caption: {
|
||
|
fontSize: "0.772rem",
|
||
|
letterSpacing: "0.033em",
|
||
|
lineHeight: "1.6rem"
|
||
|
},
|
||
|
body1Next: {
|
||
|
fontSize: "1rem",
|
||
|
letterSpacing: "0em",
|
||
|
lineHeight: "1.6em"
|
||
|
},
|
||
|
body2Next: {
|
||
|
fontSize: "0.878rem",
|
||
|
letterSpacing: "0.015em",
|
||
|
lineHeight: "1.6em"
|
||
|
},
|
||
|
buttonNext: {
|
||
|
fontSize: "0.878rem",
|
||
|
letterSpacing: "0.09em",
|
||
|
lineHeight: "2.25rem"
|
||
|
},
|
||
|
captionNext: {
|
||
|
fontSize: "0.772rem",
|
||
|
letterSpacing: "0.33em",
|
||
|
lineHeight: "1.6rem"
|
||
|
},
|
||
|
overline: {
|
||
|
fontSize: "0.678rem",
|
||
|
fontWeight: 500,
|
||
|
letterSpacing: "0.166em",
|
||
|
lineHeight: "2em",
|
||
|
textTransform: "uppercase"
|
||
|
},
|
||
|
h1: {
|
||
|
fontSize: "2.822rem",
|
||
|
letterSpacing: "-0.015em",
|
||
|
lineHeight: "1.2em"
|
||
|
},
|
||
|
h2: {
|
||
|
fontSize: "1.575rem",
|
||
|
letterSpacing: "0em",
|
||
|
lineHeight: "1.33em"
|
||
|
},
|
||
|
h3: {
|
||
|
fontSize: "1.383rem",
|
||
|
fontWeight: 300,
|
||
|
letterSpacing: "0em",
|
||
|
lineHeight: "1.33em"
|
||
|
},
|
||
|
h4: {
|
||
|
fontSize: "1.215rem",
|
||
|
letterSpacing: "0.007em",
|
||
|
lineHeight: "1.45em"
|
||
|
},
|
||
|
h5: {
|
||
|
fontSize: "1.138rem",
|
||
|
letterSpacing: "0.005em",
|
||
|
lineHeight: "1.55em"
|
||
|
},
|
||
|
h6: {
|
||
|
fontSize: "1.067rem",
|
||
|
fontWeight: 400,
|
||
|
letterSpacing: "0.01em",
|
||
|
lineHeight: "1.6em"
|
||
|
},
|
||
|
subtitle1: {
|
||
|
fontSize: "0.937rem",
|
||
|
letterSpacing: "0.015em",
|
||
|
lineHeight: "1.6em",
|
||
|
fontWeight: 300
|
||
|
},
|
||
|
subtitle2: {
|
||
|
fontSize: "0.878rem",
|
||
|
fontWeight: 500,
|
||
|
letterSpacing: "0.02em",
|
||
|
lineHeight: "1.75em"
|
||
|
},
|
||
|
useNextVariants: true // set so that console deprecation warning is removed
|
||
|
|
||
|
},
|
||
|
overrides: {
|
||
|
MuiListSubheader: {
|
||
|
root: {
|
||
|
'&[role="presentation"]:focus': {
|
||
|
outline: 0
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
MuiTooltip: {
|
||
|
// Overridden from https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js#L40-L70
|
||
|
tooltipPlacementLeft: _defineProperty({}, '@media (min-width:600px)', {
|
||
|
margin: 0
|
||
|
}),
|
||
|
tooltipPlacementRight: _defineProperty({}, '@media (min-width:600px)', {
|
||
|
margin: 0
|
||
|
}),
|
||
|
tooltipPlacementTop: _defineProperty({}, '@media (min-width:600px)', {
|
||
|
margin: 0
|
||
|
}),
|
||
|
tooltipPlacementBottom: _defineProperty({}, '@media (min-width:600px)', {
|
||
|
margin: 0
|
||
|
})
|
||
|
},
|
||
|
MuiTouchRipple: {
|
||
|
childPulsate: {
|
||
|
animation: 'none'
|
||
|
},
|
||
|
rippleVisible: {
|
||
|
animation: 'none'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
props: {
|
||
|
MuiButtonBase: {
|
||
|
disableTouchRipple: true
|
||
|
},
|
||
|
MuiLink: {
|
||
|
underline: 'always'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
language: 'en',
|
||
|
// The default language set in the application
|
||
|
availableLanguages: {
|
||
|
// All the languages available in the language switcher
|
||
|
ar: 'العربية',
|
||
|
de: 'Deutsch',
|
||
|
en: 'English',
|
||
|
fr: 'Français',
|
||
|
ja: '日本語',
|
||
|
kr: '한국어',
|
||
|
lt: 'Lietuvių',
|
||
|
nl: 'Nederlands',
|
||
|
'nb-NO': 'Norwegian Bokmål',
|
||
|
pl: 'Polski',
|
||
|
'pt-BR': 'Português do Brasil',
|
||
|
vi: 'Tiếng Việt',
|
||
|
'zh-CN': '中文(简体)',
|
||
|
'zh-TW': '中文(繁體)',
|
||
|
it: "Italiano",
|
||
|
sr: 'Српски',
|
||
|
sv: 'Svenska'
|
||
|
},
|
||
|
annotations: {
|
||
|
htmlSanitizationRuleSet: 'iiif',
|
||
|
// See src/lib/htmlRules.js for acceptable values
|
||
|
filteredMotivations: ['oa:commenting', 'oa:tagging', 'sc:painting', 'commenting', 'tagging']
|
||
|
},
|
||
|
createGenerateClassNameOptions: {
|
||
|
// Options passed directly to createGenerateClassName in Material-UI https://material-ui.com/styles/api/#creategenerateclassname-options-class-name-generator
|
||
|
productionPrefix: 'mirador'
|
||
|
},
|
||
|
requests: {
|
||
|
preprocessors: [// Functions that receive HTTP requests and manipulate them (e.g. to add headers)
|
||
|
// (url, options) => (url.match('info.json') && { ...options, myCustomThing: 'blah' })
|
||
|
],
|
||
|
postprocessors: [// Functions that receive HTTP responses and manipulates them before adding to store
|
||
|
// An example of manipulating the response for an annotation request
|
||
|
// (url, action) => {
|
||
|
// if (action.annotationId) {
|
||
|
// action.annotationJson = {};
|
||
|
// }
|
||
|
// }
|
||
|
]
|
||
|
},
|
||
|
translations: {// Translations can be added to inject new languages or override existing labels
|
||
|
},
|
||
|
window: {
|
||
|
//global window defaults
|
||
|
allowClose: false,
|
||
|
// Configure if windows can be closed or not
|
||
|
allowFullscreen: false,
|
||
|
// Configure to show a "fullscreen" button in the WindowTopBar
|
||
|
allowMaximize: false,
|
||
|
// Configure if windows can be maximized or not
|
||
|
allowTopMenuButton: false,
|
||
|
// Configure if window view and thumbnail display menu are visible or not
|
||
|
allowWindowSideBar: true,
|
||
|
// Configure if side bar menu is visible or not
|
||
|
authNewWindowCenter: 'parent',
|
||
|
// Configure how to center a new window created by the authentication flow. Options: parent, screen
|
||
|
sideBarPanel: 'search',
|
||
|
// Configure which sidebar is selected by default. Options: info, attribution, canvas, annotations, search
|
||
|
defaultSidebarPanelHeight: 201,
|
||
|
// Configure default sidebar height in pixels
|
||
|
defaultSidebarPanelWidth: 235,
|
||
|
// Configure default sidebar width in pixels
|
||
|
defaultView: 'single',
|
||
|
// Configure which viewing mode (e.g. single, book, gallery) for windows to be opened in
|
||
|
forceDrawAnnotations: false,
|
||
|
hideWindowTitle: true,
|
||
|
// Configure if the window title is shown in the window title bar or not
|
||
|
highlightAllAnnotations: false,
|
||
|
// Configure whether to display annotations on the canvas by default
|
||
|
showLocalePicker: false,
|
||
|
// Configure locale picker for multi-lingual metadata
|
||
|
sideBarOpen: true,
|
||
|
// Configure if the sidebar (and its content panel) is open by default
|
||
|
switchCanvasOnSearch: true,
|
||
|
// Configure if Mirador should automatically switch to the canvas of the first search result
|
||
|
panels: {
|
||
|
// Configure which panels are visible in WindowSideBarButtons
|
||
|
info: false,
|
||
|
attribution: false,
|
||
|
canvas: false,
|
||
|
annotations: false,
|
||
|
search: true,
|
||
|
layers: false
|
||
|
},
|
||
|
views: [{
|
||
|
key: 'single',
|
||
|
behaviors: ['individuals']
|
||
|
}, {
|
||
|
key: 'book',
|
||
|
behaviors: ['paged']
|
||
|
}, {
|
||
|
key: 'scroll',
|
||
|
behaviors: ['continuous']
|
||
|
}, {
|
||
|
key: 'gallery'
|
||
|
}],
|
||
|
elastic: {
|
||
|
height: 400,
|
||
|
width: 480
|
||
|
}
|
||
|
},
|
||
|
windows: [// Array of windows to be open when mirador initializes (each object should at least provide a manifestId key with the value of the IIIF presentation manifest to load)
|
||
|
|
||
|
/**
|
||
|
Example Window:
|
||
|
{
|
||
|
manifestId: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
|
||
|
canvasId: 'https://iiif.harvardartmuseums.org/manifests/object/299843/page_2',
|
||
|
thumbnailNavigationPosition: 'far-bottom',
|
||
|
}
|
||
|
// ../state/actions/window.js `defaultOptions`
|
||
|
// ../lib/MiradorViewer.js `windowAction`
|
||
|
*/
|
||
|
],
|
||
|
thumbnails: {
|
||
|
preferredFormats: ['jpg', 'png', 'webp', 'tif']
|
||
|
},
|
||
|
thumbnailNavigation: {
|
||
|
defaultPosition: 'off',
|
||
|
// Which position for the thumbnail navigation to be be displayed. Other possible values are "far-bottom" or "far-right"
|
||
|
displaySettings: true,
|
||
|
// Display the settings for this in WindowTopMenu
|
||
|
height: 130,
|
||
|
// height of entire ThumbnailNavigation area when position is "far-bottom"
|
||
|
width: 100 // width of one canvas (doubled for book view) in ThumbnailNavigation area when position is "far-right"
|
||
|
|
||
|
},
|
||
|
workspace: {
|
||
|
draggingEnabled: true,
|
||
|
allowNewWindows: true,
|
||
|
id: uuid(),
|
||
|
isWorkspaceAddVisible: false,
|
||
|
// Catalog/Workspace add window feature visible by default
|
||
|
exposeModeOn: false,
|
||
|
// unused?
|
||
|
height: 5000,
|
||
|
// height of the elastic mode's virtual canvas
|
||
|
showZoomControls: false,
|
||
|
// Configure if zoom controls should be displayed by default
|
||
|
type: 'mosaic',
|
||
|
// Which workspace type to load by default. Other possible values are "elastic". If "mosaic" or "elastic" are not selected no worksapce type will be used.
|
||
|
viewportPosition: {
|
||
|
// center coordinates for the elastic mode workspace
|
||
|
x: 0,
|
||
|
y: 0
|
||
|
},
|
||
|
width: 5000 // width of the elastic mode's virtual canvas
|
||
|
|
||
|
},
|
||
|
workspaceControlPanel: {
|
||
|
enabled: false // Configure if the control panel should be rendered. Useful if you want to lock the viewer down to only the configured manifests
|
||
|
|
||
|
},
|
||
|
galleryView: {
|
||
|
height: 120,
|
||
|
// height of gallery view thumbnails
|
||
|
width: null // width of gallery view thumbnails (or null, to auto-calculate an aspect-ratio appropriate size)
|
||
|
|
||
|
},
|
||
|
osdConfig: {
|
||
|
// Default config used for OpenSeadragon
|
||
|
alwaysBlend: false,
|
||
|
blendTime: 0.1,
|
||
|
preserveImageSizeOnResize: true,
|
||
|
preserveViewport: true,
|
||
|
showNavigationControl: false
|
||
|
},
|
||
|
"export": {
|
||
|
catalog: true,
|
||
|
companionWindows: true,
|
||
|
config: true,
|
||
|
elasticLayout: true,
|
||
|
layers: true,
|
||
|
// filter out anything re-retrievable:
|
||
|
manifests: {
|
||
|
filter: function filter(_ref) {
|
||
|
var _ref2 = _slicedToArray(_ref, 2),
|
||
|
id = _ref2[0],
|
||
|
value = _ref2[1];
|
||
|
|
||
|
return !id.startsWith('http');
|
||
|
}
|
||
|
},
|
||
|
viewers: true,
|
||
|
windows: true,
|
||
|
workspace: true
|
||
|
},
|
||
|
audioOptions: {
|
||
|
// Additional props passed to <audio> element
|
||
|
controls: true,
|
||
|
crossOrigin: 'anonymous'
|
||
|
},
|
||
|
videoOptions: {
|
||
|
// Additional props passed to <audio> element
|
||
|
controls: true,
|
||
|
crossOrigin: 'anonymous'
|
||
|
},
|
||
|
auth: {
|
||
|
serviceProfiles: [{
|
||
|
profile: 'http://iiif.io/api/auth/1/external',
|
||
|
external: true
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/1/kiosk',
|
||
|
kiosk: true
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/1/clickthrough'
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/1/login'
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/0/external',
|
||
|
external: true
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/0/kiosk',
|
||
|
kiosk: true
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/0/clickthrough'
|
||
|
}, {
|
||
|
profile: 'http://iiif.io/api/auth/0/login'
|
||
|
}]
|
||
|
}
|
||
|
};
|