UNPKG

mirador

Version:

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.

116 lines (99 loc) 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSequences = exports.getSequenceViewingHint = exports.getSequenceViewingDirection = exports.getSequenceTreeStructure = exports.getSequenceBehaviors = exports.getSequence = exports.getCanvasIndex = void 0; var _reselect = require("reselect"); var _manifesto = require("manifesto.js"); var _manifests = require("./manifests"); var _getters = require("./getters"); var getSequences = (0, _reselect.createSelector)([_manifests.getManifestoInstance], function (manifest) { if (!manifest || !manifest.getTopRanges) return null; var topRangesOrRoot = manifest.getTopRanges(); var v2TopRanges = topRangesOrRoot.filter(function (r) { return r.getProperty('viewingHint') === 'top'; }); var v3RangeSequences = []; if (v2TopRanges.length === 0 && topRangesOrRoot.length === 1) { v3RangeSequences = topRangesOrRoot[0].getRanges().filter(function (r) { return r.getBehavior() === 'sequence'; }); } var sequences = [].concat( // v2: multi-sequence manifests, or v3: items manifest.getSequences(), // v3: all top-level ranges with behavior=sequence v3RangeSequences); return sequences; }); exports.getSequences = getSequences; var getSequence = (0, _reselect.createSelector)([getSequences, _getters.getWindow, function (state, _ref) { var sequenceId = _ref.sequenceId; return sequenceId; }], function (sequences, window, sequenceId) { if (!sequences) return null; if (sequenceId || window && window.sequenceId) { var currentSequence = sequences.find(function (s) { return s.id === (sequenceId || window.sequenceId); }); if (currentSequence) return currentSequence; } return sequences[0]; }); /** Return the canvas index for a certain window. * @param {object} state * @param {String} windowId * @param {Number} */ exports.getSequence = getSequence; var getCanvasIndex = (0, _reselect.createSelector)([_getters.getWindow, getSequence], function (window, sequence) { return (sequence && window && window.canvasId && sequence.getCanvasById(window.canvasId) || {}).index || 0; }); /** * Returns the viewing hint for the first sequence in the manifest or the manifest * @param {object} state * @param {object} props * @param {string} props.manifestId * @param {string} props.windowId * @return {Number} */ exports.getCanvasIndex = getCanvasIndex; var getSequenceViewingHint = (0, _reselect.createSelector)([getSequence, _manifests.getManifestoInstance], function (sequence, manifest) { if (!manifest) return null; var viewingHint = sequence && sequence.getViewingHint() || manifest.getViewingHint(); if (viewingHint) return viewingHint; return null; }); /** */ exports.getSequenceViewingHint = getSequenceViewingHint; var getSequenceViewingDirection = (0, _reselect.createSelector)([_getters.getWindow, getSequence, _manifests.getManifestoInstance], function (window, sequence, manifest) { var viewingDirection = window && window.viewingDirection || sequence && sequence.getViewingDirection() || manifest && manifest.getViewingDirection(); if (viewingDirection) return viewingDirection; return null; }); /** * Returns the behaviors viewing hint for the manifest * @param {object} state * @param {object} props * @param {string} props.manifestId * @param {string} props.windowId * @return {Number} */ exports.getSequenceViewingDirection = getSequenceViewingDirection; var getSequenceBehaviors = (0, _reselect.createSelector)([getSequence, _manifests.getManifestoInstance], function (sequence, manifest) { if (!manifest || !sequence) return []; var sequenceBehaviors = sequence && sequence.getProperty('behavior'); if (sequenceBehaviors) { if (Array.isArray(sequenceBehaviors)) return sequenceBehaviors; return [sequenceBehaviors]; } var behaviors = manifest.getProperty('behavior'); if (!behaviors) return []; if (Array.isArray(behaviors)) return behaviors; return [behaviors]; }); /** */ exports.getSequenceBehaviors = getSequenceBehaviors; var getSequenceTreeStructure = (0, _reselect.createSelector)([getSequence, _manifests.getManifestoInstance], function (sequence, manifest) { if (sequence && sequence.getProperty('type') && sequence.isRange()) return sequence.getTree(new _manifesto.TreeNode('root')); return manifest && manifest.getDefaultTree(); }); exports.getSequenceTreeStructure = getSequenceTreeStructure;